DataPerfect : A Perfect Database For the Palmtop

If your record keeping needs overwhelm the Palmtop's Database Engine, turn to DataPerfect and be overwhelmed by a relational database with power, speed, excellent support (and it's Free!).
By Ralph Alvy

The Database engine built into the HP Palmtops is more than enough for most users. However, the engine does have its limitations. It is essentially a flat file database that maintains separate data files for the Appointment Book, Phone Book, NoteTaker and WorldTime programs. There's no easy way to tie these different data files together. You can't bring up Chicago, IL in WorldTime and hop to the phone number of all your contacts in that city and then view the ToDo/Appointment items for each of these contacts.

For this you need a relational database and, unless you already have a program like dBASE III+ or FoxPro, expect to pay big bucks for such a program. Expect to spend a lot of time learning to set up the databases and do the necessary programming. When you finish you'll have something that would run on the Palmtop but without much snap and pizzazz.

But wait! You can now have all the power of a relational database without the steep learning curve of database programming. You can design your own applications and wind up with something that runs almost too fast on a Palmtop.

DataPerfect is the relational database management system (RDBMS) that will do this job for you. The program runs on any PC. It even runs on the HP 95LX and HP 1000CX and, of course, on the HP 100/200LX.

The program uses less than 300 K bytes of RAM no matter how large your application and it's very fast. Many consider it the fastest relational database system ever created.

DataPerfect allow developers to create applications using a point-and-shoot process. Nowadays such a tool is called a Rapid Application Development (RAD) tool.

DataPerfect was originally distributed by the WordPerfect Corporation and later by Novell, the company which still owns the rights to the program.

In December 1995, Novell released DataPerfect to the public encouraging its free distribution as copyrighted freeware. They also allowed Lew Bastian, the author of the program, to upgrade the product as he saw fit. Lew is still upgrading and enhancing DataPerfect. He makes new releases publicly available on CompuServe and the Internet almost every month.

Though Novell doesn't support it, DataPerfect is currently supported by a very active community of application developers. Support is found on CompuServe in the WPUSERS Forum Section 11 and on the DataPerfect listserv. To subscribe to the listserv, send email to, placing the string "subscribe" in the message subject field (it's not case-sensitive). The message body will be ignored, so you can put anything you want there.

Some Specifications

A DataPerfect application can relate up to 99 data files (called panels). Each of those files can hold up to 16 million records and each record allows up to 125 fields. Variable-length text fields, called memo fields in most other databases, can have up to up to 64,000 characters each. (That's twice as much as the Database engine in the Palmtop allows.) AND there is no limit to the number of such memo fields in a record.

A DataPerfect application is fully networkable and requires no special drivers or setup. The program allows up to 9,999 users to view and edit the same record simultaneously.

DataPerfect itself consists of two program files (DP.EXE and DP.SYS). As each network user loads DataPerfect, the program creates a unique set of three temporary files (DP*.TMP). Each DataPerfect application consists of a structure file, a single index file, a file containing all data found in variable-length text fields and up to 99 data files.

The Panel and the DataPerfect Paradigm

DataPerfect's way of working differs from that used by most RDBMSs. With most RDBMSs, the developer defines views and forms for each data file (also called a "relation" or a "table") A view is a way of looking at a particular data file's records and a form is a way of entering, editing or deleting records in a data file. Most RDBMSs allow multiple views and forms per data file. However, when defining a DataPerfect application, the view and form are merged into a single screen entity: the panel. When you create a panel you're creating a data file along with its single view and form. This trick gives DataPerfect its "rapidity" in developing applications. The downside is that each application can only have one view and one form per data file.

The developer can hide, rearrange and select the data that the user will see on the screen. However all the data will still be in the file on the disk.

The Look and Feel of DataPerfect

Screen 1 shows a panel display of a data file containing Attorney records. The upper part of the display is a Help Screen area. What you see in that area was placed there by the developer. In the data area (the lower rectangle) the cursor is sitting on the Last Name field which currently has the string Harrington' in it. A Help Screen is tied to a particular field, so each field has its own configurable Help Screen. After the user hits Tab, landing on the First Name field, the display looks like Screen 2.

Screen 1: DataPerfect Screens can be modified for each database.

Screen 2: Context sensitive help can be tied to each field in DataPerferct

Note that the Help Screen refers to the First Name field instead of the Last Name field. Again, that Help Screen was created by the application's definer.

Although the contents of the Help Screen is configurable its size is not. However both the size and position of the data area is configurable.


When the user calls a lookup (hitting Up Arrow or F8 when on a field in Browse mode) the lookup display replaces the Help Screen with rows of records with the lookup highlight bar on the currently displayed record.

The lookup display, in Screen 3, was called while sitting on the First Name field in the panel display.

Screen 3: Selecting a different record is easy in DataPerfect

Under default configuration, moving the lookup highlight bar up and down causes the data area of the panel to match the record being highlighted. You can change that so the panel display updates only after you select a record from the lookup by hitting ENTER.

DataPerfect allows a different lookup scheme for each field on which the enduser can place the cursor. Each such lookup can use a different index to sort that panel's records and display different fields to the user. You can define a panel so that when the user performs a lookup on the First Name field, records are sorted in that lookup by the First Name field and the lookup displays First Name, Last Name, and Account Number on each row. You could also define the lookup on the Last Name field to sort by the Last Name field and display only the Last Name and First Name on each row. Since you're allowed up to 200 indexes per data file (panel) and 125 fields per panel, the possibilities for various lookups are almost endless.

DataPerfect lookups were the first database lookups allowing the user to pick a record with rapid search. When a lookup is active (as in Screen 3), typing a character brings you to the first record that starts with that character. Type another character, and you get even closer to the record for which you're looking.


As mentioned earlier, a DataPerfect application can have up to 99 panels (data files) each containing up to 16 million records.

For those who have used other RDBMSs to build database applications here are a few points about DataPerfect's relational possibilities:

1. Any panel can be linked to any other panel.

2. A panel can be linked to as many other panels as desired.

3. Such links don't require common fields to exist between linked data files.

4. All three major relationships are supported (one-to-many, many-to-one, and many-to-many).

What Does "Relational" Mean?

DataPerfect is a relational database management system. So what does that mean? What are the benefits? Let me answer that by referring to the data files I've been using in the different screen shots. One data file contains information about attorneys and the other contains data about clients.

Now suppose you were given the task of relating the attorneys in the one file with the clients in the other file. Could you do it with just the Database application in the Palmtop?

The answer is "yes" but with a lot of extra typing. You'd wind up with one file in which the main field would be the names of the attorneys. In each attorney's record you would have several fields containing the names of clients. If several clients had many attorneys then those clients' names would have to appear many times in the data file. You'd have to make sure that the names were spelled consistently in all cases and you'd have to make sure that the proper fields were changed if a client changed attorneys.

DataPerfect, like other relational database systems, eliminates this redundant data by keeping similar data in separate files and creating links from the records in one file to one or more records in another file. You build these links, on the fly, as you enter data in either file.

When you use the database, you might look for a particular attorney's name. When you find your Attorney you Tab to the "Panel Link to Client Panel" and then hit Down Arrow to arrive in the Client Panel to view Clients attached to that Attorney or create new ones.

The diamond character is a panel link. Hitting Down Arrow on that object will take you to the Client Panel, if that's the way the developer defined that panel link. After hitting Down Arrow on the link you see Screen 4.

Screen 4: One database appears "inside" another related database.

The Client Panel overlays the Attorney Panel. Though the Client Panel is current, you still see the Attorney Panel record in the background. Note that the Help Screen now refers to the Client Panel, not the Attorney Panel.

When creating a record for new Clients you never need to enter their Attorney's name. When first in the Attorney Panel pick the Attorney from a lookup and then penetrate the panel link to the Client Panel. The record you create there will be "attached" to the Attorney Panel record you just left.

In the above application, the Attorney-Client relationship is a one-to-many relationship (each Attorney can have many Clients), and that relationship is reflected by the panel link in the Attorney Panel.

Alternatively, the many-to-one relationship is more typically reflected by use of the data link. Let's use a different example to show this (Screen 5).

Screen 5: The data entry part of the screen can be resized.

Here the user sees a Transaction Panel with the cursor sitting on the Date field. Notice the diamond character attached to the left side of the Item field. That's a data link. A data link is used not so much for navigation from one panel to another (that's the intended function of the panel link); rather, a data link was created to allow for a pick-list lookup display during data entry. The above panel was configured in a way that filters what the user sees in the pick-list lookup display. The pick-list lookup display will display records seen in the linked Item Panel but filter them to conform to what was entered in the Category field to the left.

If the user wants to create a new record in the Transaction Panel he takes the following steps:

Enter Create mode with F9.

Type a Date in the Date field.

Tab to the Category field and type in a Category.

Tab to the Item field and hit Up Arrow

Assuming the user entered 11/15/1998 for the Date and 'BOOK' for the Category then, at this point, the screen looks like Screen 6.

Screen 6: Typing errors can be reduced by using related files.

Note the Item Panel overlaying the Transaction Panel with a lookup display waiting for the user to choose an Item. Also notice that the only records in the Item Panel that appear to the user are Books (Screen 6).

If the user entered 'PERI' instead of 'BOOK' in the Category field he would have seen only Peripherals (like Glare Screen or Printer Cable) in the lookup display during Create (or Edit) mode. In both cases the lookup displays records from the Item Panel but that display is filtered by the Category field value.

After the user chooses an Item DataPerfect automatically fills in the appropriate fields in the Transaction Panel. Screen 7 shows what the user sees after highlighting 'PERFECTING DATAPERFECT' and hitting ENTER.

Screen 7: Completed Transaction

Notice that the Item and Price fields are now filled in. The cursor in this case is in the Amount field. The relation feature just saved the user a lot of typing and eliminated a lot of potential data entry errors.

Who Needs a Relational Database?

If you've pushed the Palmtop's Database engine to the limit and realized that it can't handle the complexity of your data, then you're ready to look at a relational database.

DataPerfect is perhaps the perfect RDBMS for the Palmtop. It's relatively easy to get started using it; it's frugal with memory and fast and above all else: the price is right.

What Version to Get

As of this writing I consider the 2.3d release of DataPerfect to be acceptable for critical data. That's the version I run my office billing data on and feel confident using it. My business application has over 70,000 records in its Transactions Panel and that's only one of about 30 panels in the application. The latest beta version of the program is 2.6c but, as of this writing, I don't consider it ready for critical data. You can find both versions in the "Download Library" of the following DP Web site:

The above Web site tends to be more up to date than the official DP Web site mentioned below.

A DataPerfect Book

If you start to use DataPerfect and decide you want to know more about how to make it do exactly what you want it to do, I suggest getting a copy of my book, Mastering DataPerfect.

The book is about 500 pages long and is available in electronic form. It consists of a WordPerfect file in either 5.1 or 6.x format accompanied by applications I wrote to demonstrate ideas in the book.

Mastering DataPerfect, along with the sample applications, can be found in a password-protected Zip file that can be downloaded from the "Download Library" of the official DataPerfect Web page:

Look for DPBOOK51.ZIP or DPBOOK61.ZIP there (the number in each filename refers to the WordPerfect format of the enclosed document). I sell rights to this package for $60 and will email you the Zip file's password upon receiving a credit card payment from you via email. Email me for an order form at

If you want to take a peek first, you can peruse the Table of Contents of the book along with the Foreword written by DataPerfect's author (Lew Bastian) on the DataPerfect Web site mentioned above in the "New DP Book" Section.

Shareware/Freeware mentioned in this article