1. Description
  2. Author and Credits
  3. What do you need to pay?
  4. Installation
  5. Known problems
  6. User support
  7. Version History
  8. A Note on Terminology

Download sk Database components


Description

These units simplify the life of a programmer who has to deal with dBase tables in Delphi. They are divided into two units:
  1. skTable contains TskTable - engine-independent TTable descendant.
  2. 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!

Author and Credits

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

What do you need to pay?

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

Installation

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.

Known Problems

  1. 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}
    

Known User support

  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:
      • with BDE only.
    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.

  2. 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.

  3. 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.

  4. 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 History

    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
    

    A Note on Terminology

    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