Subject | Record not found in IBODataset.pas (fix) |
---|---|
Author | IMB T |
Post date | 2001-12-05T09:10:13Z |
Sometimes, due to resync mecanism of the TDataset, you can get a 'Record not
found' error (especially after filtering & ordering).
Is raised in TIBODataset.GetRecord(<Buffer>, gmCurrent, ... ) when the
cursor is at the one of the edges of the InternalDataset's buffer (see
source).
Fortunatelly is easy to fix this:
procedure TIBODataset.Resync( Mode: TResyncMode );
begin
// It is important to prevent the Resync() process from being interrupted.
if Active then
begin
InternalDataset.BeginCallbackFreeze;
{Begin added code}
if Bof then Next;
if Eof then Prior;
{End added code}
try
inherited Resync( Mode );
finally
InternalDataset.EndCallbackFreeze;
end;
end;
end;
HTH
Perhaps Jason can add this in a next (sub)release.
found' error (especially after filtering & ordering).
Is raised in TIBODataset.GetRecord(<Buffer>, gmCurrent, ... ) when the
cursor is at the one of the edges of the InternalDataset's buffer (see
source).
Fortunatelly is easy to fix this:
procedure TIBODataset.Resync( Mode: TResyncMode );
begin
// It is important to prevent the Resync() process from being interrupted.
if Active then
begin
InternalDataset.BeginCallbackFreeze;
{Begin added code}
if Bof then Next;
if Eof then Prior;
{End added code}
try
inherited Resync( Mode );
finally
InternalDataset.EndCallbackFreeze;
end;
end;
end;
HTH
Perhaps Jason can add this in a next (sub)release.