Subject | Converting App from Paradox to FB/IBO |
---|---|
Author | Lutz Kutscher |
Post date | 2006-02-27T12:19:45Z |
Hi,
I'm currently in the progress of converting an old application that
uses paradox tables for local / temporary data storage.
(D7, FB 1.5, IBO 4.? (4.5 i believe))
I've converted all paradox tables to firebird tables and replaced all
TQuery ant TTable components with TIBOQuery components. Reading and
writing works well, but I have some problems with filtering and
bookmarks.
The Connection component has one transaction component connected to it
as default transaction. It is set to autocommit.
All Queries in the application are connected to those two components.
1) The old application made intensive use of Filtering like this:
Qry.Filter := SomeFilterString;
Qry.Filtered := False;
while Qry.FindFirst do begin
... something to do with that record, could be:
Qry.Delete;
end;
The IBOQuery finds the first matching record and (in this special
case) deletes it. All subsequent FindFirst's return false (I know,
that the query contains more matching records).
2) The way bookmarks are used fails with IBOQuery:
with Qry do begin
Filter := SomeFilterString
Filtered := True;
FirstMatchingRec := GetBookmark;
while not EOF do begin
...some code...
Next;
end;
Filtered := False;
GotoBookmark(FirstMatchingRec);
FreeBookmark(FirstMatchingRec);
end;
Stepping through this code shows that the filtering works ok. It steps
nicely through the records. But after deactivating the Filter, it
doesn't jump to the bookmarked record.
Since I'm pretty new to working with IBO, this might have something to
do with the wide possibilities of TIBOQuery, TIB_Connection or
TIB_Transaction, but I can't seem to find, what setting it might be
that gives me "BDE-like" behaviour for filtering and bookmarking.
Any ideas?
TIA,
Lutz Kutscher
I'm currently in the progress of converting an old application that
uses paradox tables for local / temporary data storage.
(D7, FB 1.5, IBO 4.? (4.5 i believe))
I've converted all paradox tables to firebird tables and replaced all
TQuery ant TTable components with TIBOQuery components. Reading and
writing works well, but I have some problems with filtering and
bookmarks.
The Connection component has one transaction component connected to it
as default transaction. It is set to autocommit.
All Queries in the application are connected to those two components.
1) The old application made intensive use of Filtering like this:
Qry.Filter := SomeFilterString;
Qry.Filtered := False;
while Qry.FindFirst do begin
... something to do with that record, could be:
Qry.Delete;
end;
The IBOQuery finds the first matching record and (in this special
case) deletes it. All subsequent FindFirst's return false (I know,
that the query contains more matching records).
2) The way bookmarks are used fails with IBOQuery:
with Qry do begin
Filter := SomeFilterString
Filtered := True;
FirstMatchingRec := GetBookmark;
while not EOF do begin
...some code...
Next;
end;
Filtered := False;
GotoBookmark(FirstMatchingRec);
FreeBookmark(FirstMatchingRec);
end;
Stepping through this code shows that the filtering works ok. It steps
nicely through the records. But after deactivating the Filter, it
doesn't jump to the bookmarked record.
Since I'm pretty new to working with IBO, this might have something to
do with the wide possibilities of TIBOQuery, TIB_Connection or
TIB_Transaction, but I can't seem to find, what setting it might be
that gives me "BDE-like" behaviour for filtering and bookmarking.
Any ideas?
TIA,
Lutz Kutscher