CB4 Tables FAQ
? Are there any demos on how I can use CB4 Tables?
! They are not really necessary, you can use CB4 Tables in the same manner as you would use a TTable plus a TDatabase. The simplest possible demo (with a GUI) is:
Now start editing, inserting and deleting records...
? When I open a Table in ReadOnly mode and then open the same Table (in an other dataset) not readonly, I get the Error: Error Duplicate Instance Found Error Opening File (-69)
!
This is due to an error in CodeBase. If you
have opened a table in a restrictive way first, other instances
of that table can only be openend in the same or a more
restrictive way as long as the first table is open. A workaround
is using a different Database for that table.
? I want to use a function that is in CodeBase (like pack or reindex) but it is not implemented in TCB4Tables/TCB4Database, how do I do that.
!
You can do this just by calling the appropriate CodeBase
function. In this function you can use the property TCB4Table.CBDATA4
for d4* functions and TCB4Database.CBCODE4 for
c4* functions. For Example to pack a table just do d4pack(CB4Table.CBDATA4).
? It is very slow when I set a range on a table, (when there are a lot of records in the range).
! This is probably because you use a KeyInclusive range end in stead of a KeyExclusive. For example if you want to set a range on all records that have CustNo=2, you would normally do so by setting both range start and range end on CustNo=2, but you can also do this as follows:
CB4Table1.SetRangeStart;
CB4Table1.FieldByName('CustNo').Value := 2;
CB4Table1.KeyExclusive := False; // default value, so not really necessary
CB4Table1.SetRangeEnd;
CB4Table1.FieldByName('CustNo').Value := 3;
CB4Table1.KeyExclusive := True; // this says don't include 3!!!
CB4Table1.ApplyRange;
Now CB4 Tables will search for a CustNo 3 and skip back until
it finds something other then 3. For more info see the Delphi help on KeyExclusive
Send your questions to tiriss@tiriss.com.