
Get the Fully Object-Oriented Class
Library for Clipper!
FiveDB is a fully object-oriented class Library that enhances
Clipper's functionality towards a real Database Management
system. It provides a layer between your Applications
business Logic and all Database activities, so instead of
hassling around with networking problems, index creation,
relations and filters you can let FiveDB take over all those
tasks for you.
With FiveDB, you can:
- Create a data Dictionary that describes the structure of your
database, index files and relations. Files are automatically opened,
created and updated on the fly and checked for integrity.
- Automatic networking capabilities: records and tables are locked
and unlocked when necessary.
- Use dbServer Objects to access and manipulate your data. This
Server objects mirror the dynamic state of a database and control
the active index, record position, relations, filter, scopes and field
contents.
- Forget the Deleted Records problem, FiveDB automatically handles
that for you.
- Switch RDD's with just one command. DBFNTX, DBFCDX, COMIX,
DBFNSX, ADSNTX and ADSCDX are all supported.
- Use Scopes, Transactions, Queries, virtual Fields.
- Step into the World of 32 Bits: A FiveDB++ Version for Alaska's
Xbase++ is planned.
Features
SQL-ALIKE DEFINITION LANGUAGE
FiveDB uses a definition language, which enables you to describe the structure
of your databases, index files and relations. According to this information,
Tables and Indices are automatically created, opened, and
checked for integrity.
AUTOMATIC TABLE UPDATE
Table structures and Index keys are checked against their Definition,
and all changes in the later will be automatically done to the underlying table or index
tag without loosing your data. All changes are documented to a .
LOG file.
AUTOMATIC NETWORK CAPABILITIES
Automatic networking capabilities: records / dbf-files are locked and unlocked
only when needed, thus enhancing network performance. Since dbServer
buffers all fields by default, a record lock is only applied for a very short
time. If collisions with other users unexpectedly occur, processing may be cancelled,
retried or repeated, without loosing any data: Before changing any record physically,
a dbServer will check to see if others have changed the record since last
reading it. Networking capabilities can be switched on or off
anytime.
DBSERVER ACCESS
The heart of FiveDB is the dbServer-Class, which lets you access the database underneath.
Since this part is really very time-critical, nearly all methods have
been coded in C++ and Assembler. A dbServer-Object mirrors the dynamic state of a database:
active index, record position, relations, filter, scopes and field
contents. As many dbServer objects as needed may be created for one database,
while the database behaves as if it were opened in it's own workarea for
each server object. The benefit of this is a very easy-to-implement event-oriented
way of programming, where the user can switch between several states of a
database. Each dbServer-Class object represents the database and owns an instance
variable for each field. There is no more need for the well-known
Scatter/Gather functions which you normally use to read, edit and write fields.
Field contents are refreshed after each repositioning in the
database.
AUTOMATIC RELATION-HANDLING
Relations, besides index creation and management, maybe the most important
task of a dbServer. FiveDB uses its own implementation of Relations to make
them very fast and reliable. You can define Relations in your Data-Dictionary,
or establish them at runtime. You can specify how a related (Child) database
reacts if a key expression in the main (Parent) database is changed, or if a
DELETE should spawn all children. Example: You delete a customer record from
your database. At the same time, the related record from Customer_Conditions
should be deleted, BUT NOT the invoices (which are related, too) of that
customer. Since there would be no customer record for those invoices, we could
erase the key expressions to keep the relations integrity.
AUTOMATIC OEM<->ANSI CONVERSION
All Strings can be converted from OEM to ANSI and vice versa, so you can use
databases both from Windows and from DOS.
AUTOMATIC INDEX-HANDLING
dbServer's index management automatically creates index expressions from the defined fields,
while converting all keys to string format. Thus, a multi field
index may contain string, numeric, logical and date type fields. Indexes are, of course,
automatically opened and created when needed. The built-in
progress-indicator can be replaced by your own code.
RECYCLING OF DELETED RECORDS
Automatic recycling of deleted records, so there is no need to PACK the Table.
Deleted records are 'invisible' until a new record is needed. Instead of
appending a new record, the old one is recalled and filled with
new data.
EVENT-DRIVEN
Event-Management: APPEND/DELETE/UPDATE/ISEOF/WASEOF/ISBOF/WASBOF/MOVE actions result
in events, which are sent to a registered window and
thus to every receiver interested. Vice versa, a window might receive event messages
from other servers and manage it's own server, depending on those
messages. To reduce message posting to a minimum, messages can be filtered. On top of it,
Table and dbServer objects have several Eventslots for
codeblocks, that are evaluated when certain Actions take place.
INCREMENTAL FIELDS
Incremental fields search for the highest value of a numeric field in a database and
will return the value+1 when APPENDing. This, for example, is very
useful for Invoice numbers, IDs and such ...
VIRTUAL FIELDS
Virtual fields are 'pseudo fields', defined like a normal field, but containing a
CodeBlock, which will be evaluated when the field is being accessed. Very
handy to calculate a tax field, for example.
QUERRY OPTIMIZER
Query optimizers such as Clipmore and Mach6 are supported.
SCOPES
FiveDB's dbServer can set a Scope on a Fieldvalue to quickly limit a specified range
of records. This is much faster and leaner than using a Filter, specially
for Browsers etc.
TRANSACTION TRACKING
A Net-independent TRANSACTION TRACKING SYSTEM gives you the chance to
"roll-back" a complete transaction of any kind (DELETE/APPEND/...) on the
database, if a transaction was not successful
STRINGRESOURCES
FiveDB.dll/.rc/.res contains all strings as resource, which makes it easy
for you to translate the messages to foreign languages. You may also use FiveDB.dll for
your own resources, just use your Resource Editor and bind them to the DLL.
The Instance-Handle of the DLL is automatically stored in the class variable
_DBF():DLLHND, and you can define the DLL as your default
Resource DLL with SET RESOURCES TO _dbf():dllhnd.
CARGO VARS- and METHODS
FiveDB lets you define your own InstanceVars and Methods for every dbServer Class.
This way you can add your Business logic directly to a
dbServer class.
SOURCE CODE
FiveDB comes with complete Clipper Source Code, and most C++ Sources.
This gives you the opportunity to fully understand what's going on in FiveDB,
change and extend its behaviour, and learn from the code.
System Requirements:
- 386 or faster processor, Windows 3.11, Windows
95/98 or Windows NT 4.0
- Clipper 5.2 or 5.3, and FiveWin/Vampire 1.92 or
higher
FiveDB is "electronically
delivered" only