Subject | RE: [IBO] Bug? TIB_Query.locate - AbortFetching failing |
---|---|
Author | Jason Wharton |
Post date | 2007-08-07T01:25:30Z |
Gunther,
In the absence of a sample app, I think it is worth having you try guarding
that call with a check of the fetching aborted level condition. If fetching
has been aborted then there is no reason to check for a match on the node
list.
See my code change below and please test it and tell me if it works.
while ( not Assigned( FKeyLookupRef.Node )) and
( not Result ) and
( not CursorEof ) and
( FAGen = FetchingAbortedGen ) and
( curCursorGen = FCursorGen ) do
begin
Inc( tmpRow );
SysFetchNext;
if tmpCurLevel = FKeyLookupMaxLevel then
begin
if tmpRow <> CursorRowNum then
begin
// Somehow (via callbacks) there were additional fetches
// performed that did not pass through the code below to
check
// for a match. So, by checking the nodelist we see if the
// match slipped by.
if ( FAGen = FetchingAbortedGen ) then
SysLookupNodeList
else
Break;
end
...
end;
...
end;
Hope this helps,
Jason Wharton
In the absence of a sample app, I think it is worth having you try guarding
that call with a check of the fetching aborted level condition. If fetching
has been aborted then there is no reason to check for a match on the node
list.
See my code change below and please test it and tell me if it works.
while ( not Assigned( FKeyLookupRef.Node )) and
( not Result ) and
( not CursorEof ) and
( FAGen = FetchingAbortedGen ) and
( curCursorGen = FCursorGen ) do
begin
Inc( tmpRow );
SysFetchNext;
if tmpCurLevel = FKeyLookupMaxLevel then
begin
if tmpRow <> CursorRowNum then
begin
// Somehow (via callbacks) there were additional fetches
// performed that did not pass through the code below to
check
// for a match. So, by checking the nodelist we see if the
// match slipped by.
if ( FAGen = FetchingAbortedGen ) then
SysLookupNodeList
else
Break;
end
...
end;
...
end;
Hope this helps,
Jason Wharton