- Description
- Author and Credits
- What do you need to pay?
- Installation
- Known problems
- User support
- Version History
- A Note on Terminology
These units simplify the life of a programmer who has to deal with dBase
tables in Delphi. They are divided into two units:
- skTable contains TskTable - engine-independent TTable descendant.
- skApollo contains components specific for Luxent's Apollo engine:
TskApollo, TskApolloEnv and TskTable (yes, again!).
Other goodies that come with these units:
Comp - a unit that gives you the ability to compare stuff you
couldn't compare before!
Copyright ©1997-1998
Syarzhuk Kazachehnka
Some ideas are based on Gil Gonzales' TApolloTable component.
Table type defining code is taken from Normand Peladeau's post
on SuccessWare CompuServe forum. Therefore I gladly say:
Portions Copyright ©1997 by Gil Gonzales,
Normand Peladeau
Nothing!
I don't and I don't plan to charge anything for this components.
However, I do require you to send me email if you use them. I want to
keep track of my "customers".
Once again, my email address is bamboo7431@hotmail.com
Depending on the database engine you are using you should install
different files. If and only if you use Luxent's Apollo, you
should install skApollo.pas
. Otherwise install
skTable.pas
.
If you switch from BDE to Apollo, you should first uninstall skTable,
and only then install skApollo, otherwise you will get an error.
Usually you will maintain separate copies of your component library having
skTable installed in your regular CompLib and skApollo
installed in your SDE_ONLY or SD_BDE component library.
- TskApollo.IndexCount / TskApollo.GetIndexCount
TskApollo.GetIndexCount returns the number of open indexes.
Unfortunately, it incorrectly returns 0 (zero) immediately after
the call to IndexClose, even if there are still (other) open indexes.
The workaround suggested by Luxent tech support didn't help.
As they had to admit, "IndexClose changes some Apollo's internals".
The only solution is to perform SetOrder(1) immediately after calling
IndexClose. But SetOrder(1) won't work if the index you closed was
the last one! Unfortunately, this has to be handled by the programmer
him/her self (as opposed to just getting the index count from the engine)
but that's the way it is.
Example:
skApollo1.IndexOpen('one.ntx'); {GetIndexCount will correctly return 1}
skApollo1.IndexOpen('two.ntx'); {GetIndexCount will correctly return 2}
skApollo1.IndexClose; {though one.ntx is still open, GetIndexCount
will incorrectly return 0}
skApollo1.IndexOrder := 1; {GetIndexCount will correctly return 1}
- Tests
These components were tested:
- in Delphi 1:
- with BDE
- with Apollo in SDE_ONLY configuration since that's the only
configuration I use.
- in Delphi 3:
However, there is nothing in skTable that shouldn't work with any
database engine that supports TDataSet|TTable hierarchy. And there is
nothing in skApollo that shouldn't work under SDE_BDE configuration.
- Demos
Currently there is no demos included with these components as I don't have
time to write them. If you write one and would like to share it,
feel free to contact me and your name would be added to credits.
- Help file
I did have a help file created long ago with a trial version of ForeHelp,
but since it was limited to 10 topics and number of methods quickly
overgrew that... If someone knows of a good freeware help-authoring tool,
let me know.
- Code modifications
I can't help if you have a problem with the source that was modified
by someone else. Therefore, if you want to make any changes, please email
them back to me so I can include them in the next release. Current version
is 1.4 and the source files should have a timestamp of April 3rd, 1998.
Version Date Type Description
========================================================================
1.4.1. 4/06/98 Bug fix Forgot to put Register procedure in skTable.pas
in version 1.4.
1.4 4/03/98 Enhance Latest release.
Separated engine-independent skTable and
Apollo-dependent skApollo units.
Merged TskTable and TEvalTable into one component.
Added TskTable.Assign to ease creating
a lookup dataset.
Added TskTable.DoBeforeClose to prevent from losing
unsaved edits/inserts.
Added GetOwnerForm function.
1.3.1 3/16/98 Enhance Added TskApollo.SetIndexOrd to prevent setting
the index order for a non-active table.
1.3 12/4/97 Enhance Added EvalTable object that is not SDE-specific.
Enhance Added EvalTable.dbEval method
Bug fix Fixed GPF in skTable.DoBeforeOpen when the table
did not exist or was unavailable.
1.2.4 9/15/97 Bug fix Fixed sharing violations in TskTable.DoBeforeOpen.
1.2.3 8/29/97 Enhance Forced TskTable to automatically open "structural"
(same-name) NTX indexes when using NTX driver.
1.2.2 8/21/97 Enhance Added IndexExpression and Active properties to
TskApollo. Changed other TskApollo properties'
Get methods to check if the table is Active.
1.2.1 7/15/97 Enhance Added IndexOrder property to TskApollo.
1.2. 5/07/97 Enhance Added TskTable component.
1.1.1 4/07/97 Enhance Forced TskApollo.Create to automatically set
the gauge hook to the owner form's handle.
1.1 4/02/97 Enhance Added CheckIndex / CheckIndexTag functions to TskApollo.
1.0 3/26/97 Initial release
I prefer using "indexes" for the plural of "index" (as opposed to "indices").
As a native Russian speaker, I had enough trouble learning English to
learn Latin as well!
Back to the top