home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d9xx
/
d919
/
quickfile.lha
/
QuickFile
/
QuickFile.doc
< prev
next >
Wrap
Text File
|
1993-10-04
|
38KB
|
977 lines
QuickFile v1.3.3 1 September 1993 by Alan Wigginton
============== CONDITIONS =============================================
This program is not Public Domain, however it can be freely distributed
provided all documentation and sample files are included unchanged. This
version is fully functional, except that the 'About QuickFile' requester
will often be displayed to remind you that it is unregistered.
I accept no liability for any loss or damage resulting from the use of
this program. Users must evaluate the program and decide its usefulness
for their own purposes.
If you find this program useful, you should send $20 registration fee to
the address below. You will receive a registered copy of the latest
version of the program, with the annoying requester display removed.
You will also be entitled to free support, and bug fixes, as they become
available.
Overseas users - please do not send personal cheques. Please send an
overseas bank draft in Australian Dollars drawn on an Australian bank.
This should be readily available from your bank. Any cash currency is
also OK, however sending cash through the mail is a risk.
I intend to develop the program further if enough interest is shown and
would appreciate any constructive comments you may have, even if you
decide not to use it. Enclosing a stamped self addressed envelope will
ensure a personal reply.
Please send comments if you try it.
Donations, comments and bug reports should be sent to:
Alan Wigginton
23 Carissa St
Shailer Park, Queensland 4128.
AUSTRALIA
QuickFile was written in C and compiled with NorthC (Fish 384) from
Steve Hawtin. Thanks for your efforts Steve.
======================================================================
PROGRAM DESCRIPTION
A flexible, fast and easy to use flat file database using random access
with intelligent buffering to minimise disk access, multiple indexes
for fast access to records; form and list style screens and reports,
and fast sorting and searching. Files are quickly and easily defined,
and fields can be added, changed or deleted at any time.
WARNING. QuickFile is a random access data base that buffers records
in memory. Failure to exit the program properly after updates
are made will result in lost updates.
ALWAYS exit the program before a reboot or power off.
DO backup your files regularly.
USING THE DEMONSTRATION DATABASES.
Two demonstration databases are provided. Click on one of these icons
to start Quickfile and display the first record in the file. It is a
good idea to browse through this document to get a feel for the program
before trying to do too much.
It is strongly suggested that you copy QuickFile to a work disk before
you try adding or updating records. The easiest way to do this is to
drag the QuickFile icon into another disk window.
============ CHANGES SINCE VERSION 1.2 ===================
1. Character, date, number and integer data types.
2. Up to 255 fields per record
3. Vertical slider gadget added for scrolling through records
4. Horizontal slider gadget added for scrolling through fields on one
record. (Both form and list screens).
5. File definition is now in a separate program
6. Import/Export of ASCII files
7. Various minor improvements to the user interface
======== GETTING STARTED =========
QuickFile can be started from the WorkBench using the QuickFile icon or
a project icon for a data base. It can also be started from the CLI and
accepts a file name (optional) as a parameter.
Icons are not generated by the program. Sorry, but if you want them you
will have to create them yourself.
If you start QuickFile with a file (from a project icon or from the
CLI), the Form display appears showing the first record. If you do not
specify a file, a file requester is displayed. The file requester will
be one of the following (in order of preference):
The ASL requester (WB2) will be used if asl.library is in your
LIBS: directory.
The ARP requester will be used if arp.library is in your LIBS:
directory.
If you have neither, QuickFile will use a requester with simple
string gadgets for you to enter Drawer and File names.
This file requester will be used whenever a file name is required.
The window title bar is used to display a status line and status
messages. The status line contains
Name of the file being used.
Name of the index being used.
Current record number.
Total number of records.
QuickFile uses indexes to sequence the records and to provide rapid
access by field value. You can have a number of indexes, all of which
are automatically maintained as you add, change and delete records. The
current index is displayed in the title line. If other indexes are
available you can choose them with Use Index on the View menu.
Standard Amiga text gadgets are used for entering data. These provide
the following editing keys
right Amiga-X Erase all text in the gadget (Control-X does the
same)
right Amiga-Q Restores the text that was present before you
changed it.
Shift-left arrow Moves the cursor to the beginning of the field.
Shift-right arrow Moves the cursor to the end of the field.
Shift-Del Erases all characters from the cursor to the end of
the gadget.
Shift-Backspace Erases all characters to the left of the cursor.
============== PROGRAM FUNCTION ==================
This section describes the two main display formats, followed by an
explanation of each menu item.
FORM DISPLAY
This is the initial display you are shown after you open a file. It has
fields displayed down the screen, a row of buttons across the bottom and
a vertical and horizontal slider gadget.
The button functions are:
GoTo
This brings up a requester for you to enter the key of the
required record. Pressing the OK button or RETURN on the last key
field will perform the GoTo.
If the key you enter does not exist, the next higher record is
displayed. You can enter "SM" to position on the record for SMITH
followed by SMITHERS, SMITHFIELD etc.
Insert
Displays a blank screen and lets you enter values. Press RETURN on
each field to move you to the next field.
Press the Copy button to copy the contents of the last record
displayed or added. This is useful if you are entering records with
similar values in some fields of each record.
Press Insert to store the details and clear the fields ready for
the next record.
Press Cancel to return to Browse mode. NB When Cancel is pressed
any values displayed on the screen will be lost. Press Insert if
you want them stored.
Modify
Displays the current record for you to make changes. Press Update
to store the changes. Press Cancel to keep the current values. Press
return to move to the next field.
Delete
Brings a requester asking you to confirm the deletion. Press OK to
delete the record. Press Cancel if you really want to keep it.
List
Changes to the list format (see below)
Vertical Slider
This controls movement through the file and works in the usual way.
Horizontal Slider
If there are more fields than will fit in the current window, this
can be used to display the next group of fields.
LIST DISPLAY
This is obtained by pressing the List button or selecting List from the
VIEW menu. It displays as many records as will fit in the window with a
single line per record. If the records are wider than the window, the
horizontal slider can be used to scroll left or right.
The List screen has sliders for horizontal and vertical scrolling, and
several buttons. These are:
GoTo
As for the Form display (above).
Insert
As for the Form display (above).
Modify
Before using this, select a record using a single press of the left
mouse button. If no record is selected, the first record on the screen
will be displayed for modification.
Delete
Before using this, select a record as for modify. If you don't select
a record, you will be given an error message.
Layout
This brings up the Select Fields requester to change the fields
displayed. You can select certain fields only, change the order, or
reduce the displayed length of a field (see below).
You can also change to the form display of a record by double clicking
on the record with the left mouse button.
SELECT FIELDS REQUESTER
This is used wherever you are required to select a fields for some
purpose. A list of available fields is displayed on the left and a list
of the fields selected is displayed on the right.
You select fields from the Available fields box on the left by clicking
on them. As you select each field, it appears in the list of selected
fields.
The length of the last selected field is displayed below the list. You
can alter this to reduce (or increase) the length to be used. NB You MUST
press ENTER after changing the length. You can also click a selected
field to display its length for changing. This only affects the length
being used for the current purpose; the length of the data base field is
not changed.
The Clear button clears all current selections for you to start again.
You cannot add or delete individual fields from the selection.
============= MENU FUNCTIONS =================
PROJECT MENU
Open
Brings up a file requester for you to select the file to process.
Always select the definition name - the one with no extension. If you
select a file that is not a QuickFile definition, you will be given
a message saying that the definition cannot be found.
Save
Writes all updated blocks and indexes to disk. You should use this
periodically during a long update session.
Close
Writes all updated records and indexes to disk and closes the file
but leaves the program running.
BackUp
Creates a copy of the definition and data files (not the indexes).
A requester is displayed for you to enter the backup file name. The
default is filename.bkp.
Backup uses the current index. You can write selected records to
another file by choosing Selected from the View menu before Backup.
If you choose Backup while viewing selected records, you will be
asked for confirmation to avoid accidental loss of data.
The file is reorganised during backup, so a backup followed by a
restore will reorganise your file. Free space is adjusted to the
value specified in the file definition and records are physically
stored in the sequence of the active key. Select your most used key
sequence before doing the backup to ensure fastest access in the
reorganised file.
The backup file is a QuickFile data base so you can open it like any
other database file.
Restore
Restores from a copy made using the backup menu item. You will be
asked for two file names (using the requester)
1. The file to be restored from (source)
2. The file to be restored to (target)
After the file is restored, the indexes are automatically rebuilt.
Exit
Writes all updated records and indexes to disk, closes the file and
exits the program. Selecting the Close gadget on the screen has the
same effect. A requester is displayed to confirm your choice.
Note that you do not have the option of exiting the program without
saving the file. This is because records may be written back to the
file any time while you are running the program.
VIEW MENU
Form
Changes to or refreshes the Form display.
List
Changes to the List display.
Use Index
This has a sub-menu showing a list of indexes for you to choose from.
The first sub-menu item selects the "Sorted" sequence but will be
ghosted until you perform a sort.
When you change indexes, the same record is displayed but the file
will be in a new sequence. e.g. You can use this to find a book by a
particular author and then select the subject index to list all other
books on the same subject.
Selected
Allows you to display previously selected records. This will be
ghosted unless your have used Select from the Tools menu. See Tools
menu for more details.
TOOLS MENU
Sort
Brings up a requester for you to select fields to sort on. Sort
effectively creates a temporary index that is updated automatically
as you add, delete and change records. The Sort index is discarded
when the file is closed but until then, you will not need to re-sort
to place changed or added records in the right sequence.
If you request a sort while displaying selected records, only the
records in the selection are sorted.
Date, integer and number fields are sorted correctly according to
their value, rather than their ASCII sequence.
Sort Requester
This is identical to the List requester. You can sort over more than
one field at a time, although you can currently only sort into
ascending sequence.
Press OK to start the sort, or Cancel if you have changed your
mind. Sorting is quite fast so you shouldn't have to wait long. A
sort (over one field) of the 1300 records on my largest file takes
22 seconds on my standard A500.
The sort technique used requires that all sort keys be resident in
memory, so record buffers are freed to increase the memory available
to the sort. You will notice that disk activity increases after a sort
as buffers are reloaded. If you are short of memory, it may help to
sort using less than the full length of long fields.
Select
Searches through the data base looking for records with fields
matching requested values. A blank screen is displayed for you to
enter your selection criteria. Only fields in which you enter a
value are used in the search, and a field matches if it contains the
search string anywhere within it. eg "bit" would find "The Hobbit"
and "Bitter Sweet". Numeric fields are treated the same way, but with
date fields you can only search on a complete date.
The search ignores case so that "DOG" matches "Dog" and even "doG".
Press Search to start the search or Cancel to return to the previous
screen.
The selected data will be in the same sequence as the current Index,
which may be the result of a previous selection. If the current index
is a previous selection, only the selected records are searched.
When the search has completed, the title bar will show the number of
records selected. Don't panic, you haven't lost your file. The full
number will be displayed when you choose a full index again.
A Selection of records is an index which is updated automatically for
deletions and changes but not additions. Records you add to the data
base will not be added to the selected records.
Build Index
Rebuilds the current index. This can be used if the index and data
files are inconsistent for some reason (eg a system failure). This
will rebuild the index from the data file.
Export
Allows you to write all, or selected, records to an ASCII file for
exchanging data with word processors, other data bases etc. The field
select requester is displayed for you to choose the sequence and
length of each field.
A requester is then displayed for you to select the record and field
separators to be used for the records to be written. There are two
buttons which work like cycle gadgets in that the selection changes
with each click.
Field Separator Button
This determines the way fields are delimited in the output file. The
possible choices are:
" ", This writes encloses fields between quotes and separates
fields with a comma. (Basic language style).
eg. "Smith","Fred"
LF Fields are separated by a line feed character
TAB Fields are separated by a TAB character. This is used by
Kindwords3 for mailmerge files.
CRLF This uses the IBM style end of line character; a
carriage return followed by a line feed.
NONE No field separators are used and each field will occupy
its maximum length with trailing spaces added. Each
record will therefore be the same length.
Record Separator Button
This determines the way records are delimited in the output file. The
choices are:
LF Each record is terminated with a line feed. This is the
one used most often.
CRLF This is the standard end of line in the PC DOS world.
NONE No record separators are used. If this is used, the
field separator must also be set to NONE. This format
is used for random access files by some data bases such
as DataEasy (not sequential) and AMIBASE PRO III.
Do not use the same character as a field and record separator.
If you want any other formats, please let me know and I can add them
for you.
If you have a choice, use " ", for field separator, and LF for
record separator. However don't use this if your data fields contain
double quote characters.
Layout Button
This displays the field requester for viewing or changing the chosen
fields and lengths.
OK Button
When you press this, a file requester is displayed for you to
select a file name.
All records from the currently selected index will be written. If you
are displaying Selected records, only the selected records will be
written.
Import
This works in a similar way to Export, except records are loaded from
an ASCII file into your data base. You are presented with the field
requester to specify the sequence and length of the fields in your
ASCII file. Both sequence and length can be different from that in
the database. Also, not all database fields need to be present in the
ASCII file. Any fields not present will be set to blank in your data
base.
NB: It is vital that the sequence and number of fields you set in
the selected fields box of the field selector correspond to the
sequence of fields in the ASCII file you are importing.
Make you sure you make a back up before you import a file into an
existing data base. If you get the format wrong, it is easier to
restore than to fix or delete all of the incorrect records.
Also use plenty of buffers if you are going to import a large number
of records.
Example:
Data Base
Surname 40
First Names 40
Street 30
Suburb 30
Postcode 10
Date of Birth 11
ASCII File record example
"Alan","Wigginton"
"William","Smith"
This will work correctly provided you ensure that you select
the fields in the Import field requester in the sequence that
they are in the ASCII file.
The Import field selector should show the selected fields as:-
First Name 40
Surname 40
This will load First Name and Surname to the correct fields in
the data base and set the remaining fields to blank.
PRINT MENU
Displayed Records
Prints the records currently displayed on the screen.
All Records in Current Index
Prints all records in the current index (or Sort or Selection).
The Select Fields requester is displayed for you to choose the fields to
be printed. Pressing OK then brings up the print requester which contains:
Title
Allows you to enter a title to be printed at the top of each page of
your report. The title line will also show the current date at the
left margin and the page number at the right margin.
The title line is only printed if you enter a Title. Note that even a
single space will print a blank title. Use CTRL-X to ensure that all
characters are deleted.
Left and Right Margins
Allows you to temporarily override the current preferences settings.
QuickFile will not print beyond the character position specified in
the right margin.
Lines/Page
This controls the number of lines QuickFile will use on each page.
The default is paper size minus 8 to provide a top and bottom margin.
NB QuickFile issues a Form Feed when a new page is required. This
depends on your printers page height being set correctly, and may be a
limitation with some printers.
A value of zero will suppress the report title and page breaks.
Print Size.
This button operates like a WB2 cycle gadget. Each time you press it
displays the next value from the following
10 cpi (PICA)
12 cpi (ELITE)
17 cpi (FINE) The Commodore manuals call this 15-Fine, but on my
Epson compatible printer it prints at 17 cpi.
Lines Per Inch
This button toggles between 6 and 8 lines per inch.
Field Names?
Toggles between YES and NO. NO suppresses field names.
Report Type
Toggles between FORM and LIST. These are similar to the screen types.
FORM prints the fields down the page with the field names on the
left.
LIST prints fields in columns across the page with the field names at
the top of each column.
OK Button
This will start printing the report.
Layout
This brings up the Select Fields requester for changing the fields to
be printed.
Cancel
Returns to the main display and cancels any changes entered into the
requester.
To print mailing labels:
. Use Lines/Page of zero to suppress the title and page breaks.
. Use NO for the Field Names? button.
. Select one field for each line on the label. (For unused lines you
will need to define a dummy field that is always blank. It will use
no space in the file and you can print the same field on any number
of lines).
You can place only one field on each line and all fields will start in
the same position. It cannot print multiple labels across a page.
To print lines of 136 characters (useful for LIST reports)
. Press the Print Size button until 17cpi is displayed.
. Set left margin to 1 and right margin to 136 (80 column printer).
OPTIONS MENU
About
Tells you about QuickFile. If it is a registered copy, the name
of the registered user is displayed.
Buffers
Displays the number of buffers currently in use. This will start at
1 and gradually increase as you access records until the entire file
is in memory or the maximum allowed is reached. The maximum buffers
can be changed by altering the definition (see below)
============== FILE DEFINITION ==================
The file definition is now in a separate program. While this may not be
as convenient, it keeps the main program smaller. This is mainly for my
benefit when compiling and linking as I only have a floppy based, 1 meg
A500.
To define a new file or change an existing, click on the QFDefine icon.
CHANGING A FILE DEFINITION
You can change just about everything in a file definition, except the
block size, even after you have loaded data to the file. You can change
field names, types and lengths. You can add or delete fields, and add or
delete indexes. Caution should be used when changing field types that
contain data.
WARNING: Deleting a field makes its data inaccessible, even if you
re-add the same field. If you accidentally delete a field, reload
the definition without saving your changes and start your changes
again.
DEFINING A NEW FILE (or Changing an existing file)
The following describes all of the fields in the sequence you will
normally enter them
FILE DETAILS
Block Size
QuickFile does not read and write single records at a time, but
builds them into blocks. This reduces the number of disk reads and
writes required. Around 2000 seems to give good results. The only way
to change block size is to export the whole file, define a new data
base and use import to recreate your file. Block size must be larger
than the maximum record size plus free space, plus some space for
control fields (2 bytes per field plus 2 bytes for the record length).
Free Space
Specifies the amount of free space to be left in each block to allow
for records to expand. As QuickFile only stores the actual data
entered (not trailing blanks), additional space is required if a
change makes a field longer. 100 seems to work OK. Records are moved
to another block if necessary, so this is not critical.
Buffers
This is the maximum number of buffers QuickFile will use for holding
blocks of records in memory. Unless you have very large files or are
short of memory, use a large figure such as 100. QuickFile will never
use more buffers than are required for the whole file.
The more of the file in memory, the faster QuickFile works. The memory
used is approximately (number of buffers * buffer size).
FIELDS
Use the Add button to add a field. A requester will appear for the
field details. If a field is highlighted when you press add, the new
field will be added above the highlighted field, otherwise it is
added to the end of the list.
To change or delete fields, click on the field, then press the
appropriate button. A requester will appear for you to make or changes
or to confirm the deletion.
The Field Requester contains the following fields
Name
Enter a name of up to 12 characters for the field.
Type
Choose from character, date, integer or numeric (real)
Character string data. Whatever you like. Avoid double quotes
if you are going to use export with quotes as delimiters.
Date fields. Entered as Day/Month/Year. The separator can be
/-. or a space. Dates are always displayed in the format
14-Apr-1993.
The following are valid dates
03/08/93 3-8-93 3.aug.93 03 aug 1993
Year can be entered as two or four digits. If two digits
are used, a number greater than 50 is assumed to be this
century, 50 or less, the next century.
eg. 3/6/94 is interpreted as 03-Jun-1994
1-aug-10 is interpreted as 01-Aug-2010
A date field must be given a length of at least 11.
Integer (whole number, no decimals) These are displayed right
justified
Real Number. Decimals allowed. Numbers are displayed right
justified, but are not reformatted after you enter then. If
you want decimal points to line up, you will have to enter
the same number of decimal places in each record.
Length
Enter the required length. 60 characters is a practical maximum
length as no left and right scrolling is provided and more
characters cannot be displayed. (You can scroll within fields on the
update screen, but this is pretty tedious). The maximum is 250.
The minimum length of a date field is 11 characters.
Space is used only for the number of characters entered in each record,
not for the maximum field length. In fact, if a field is empty it
takes up no space at all.
All of these values can be changed at any time without any unexpected
effects. If you reduce the length of a field, excess data is only
discarded from records as they are updated. Increasing the field
length will restore the old data except for records you have changed.
Note that backup/restore will reformat ALL records.
INDEXES
You must define at least one index to be used for sequencing your
records, and quickly locating a record. If you are not sure pick any
field that will give a useful sequence, such as surname, title etc.
Each index can use a number of fields to give precise control of
sequence.
Fields cannot be added to or deleted from indexes, so changes are made
by deleting and redefining the index. This should not be much of a
problem as they are quick and easy to define. If you do change an index
on an existing file, it will be rebuilt the next time you open the file.
Insert Button
Pressing this brings up field requester. You must give the index a name
(up to 8 characters) and select the fields to be used. You can use part
of a long field for an index by changing the default length. This will
reduce sort storage requirements when rebuilding indexes.
Show Button
Click on an index to highlight it before pressing this button.
Displays a requester showing the fields used for the selected index.
Delete Button
Click on an index to highlight it before pressing this button. Displays
a requester showing the fields in the index. Press OK to delete the
index, press cancel if you have changed your mind.
You can have any number of indexes but you should limit yourself to
those you are going to use regularly. I find it difficult to see how more
than 2 or 3 would be useful, particularly as sorting is quite fast.
Indexes are maintained automatically as you add, modify and delete
records on your file so they reduce the need for sorting and resorting.
================ ADDITIONAL INFORMATION ==================
FILES
QuickFile uses three types of file distinguished by extension. These
are not text files and cannot be edited with most text editors. Using a
hex editor will probably corrupt the file. YOU HAVE BEEN WARNED.
The DEFINITION FILE has no extension. This is the name you enter when
specifying a file name for QuickFile.
The DATA FILE has an extension of .Data.
INDEX FILES have an extension of .nameX where 'name' is the name of the
index as specified in the file definition.
POSSIBLE PROBLEMS
If you suspect an index has been corrupted in some way, you can
delete the index file (called filename.indnameX). When you next open the
file, the index will be rebuilt.
An index may be corrupted if you do not close a file properly because of
a system failure or rebooting. The data file may be updated, but the
index would not have. If in doubt, delete the indexes.
You can also rebuild an index by selecting the Rebuild Index item from
the tools menu.
========================= HISTORY ================================
1.3.3 1 September 1993
1. Fixed problem in list display that was trashing memory if a
database had a small record size.
2. Definition was allowing block size to be changed if you increased
the record size past the maximum for the block.
3. Positioning now maintained correctly in list display when you
change indexes.
1.3.2 28 August 1993 (not released)
1. Added List button to form screen
2. Added Insert, Modify and Delete buttons to list screen.
3. Fixed problem where searching a previous selection would search
the entire data base
4. Removed spurious message being displayed when a missing index
is created.
1.3.1 4 August 1993 (Bug Fixes)
1. Index search used length of first index for all indexes -> ka-boom.
2. Deleted field names were blanked but kept in the definition.
1.3.0 23 July 1993 (not released)
1. Character, date, number and integer data types.
2. Up to 255 fields per record
3. Vertical slider gadget added for scrolling through records
4. Horizontal slider gadget added for scrolling through fields on one
record. (Both form and list screens).
5. File definition is now in a separate program
6. Import/Export of ASCII files
7. Removed problem that caused a crash when adding more than 12 fields.
1.2.2 (not released)
1 Bug fix. Sort index not updated for a delete if records
had been selected but selection did not contain the record.
Error message incorrectly being displayed for the selection.
1.2.1 16 Feb 93
1 Included list style reports
2 Included ASL and ARP file requesters
3 New print requester to improve control of reports
4 The index field size is now updated correctly when you change the
length of an existing field used as an index.
5 Index record memory dynamically reallocated if necessary.
6 If you add an index to an existing file, the index will be
rebuilt automatically when you open the file again.
7 You are now warned if you attempt a backup while displaying
selected records. Only the selected records will be written to the
backup file.
8 You can now open a file where the drawer contains only a drive or
disk name with no directory. eg df0:
1.0.0 24 Nov 92
Initial Release
======================= BUGS ==========================
Very occasionally, resizing the window in list mode takes the whole
system out. I have not been able to force this to happen, which makes
it hard to find. I think I have fixed the problem that was causing
this, but as I could never force, I am not sure.
You can give several fields the same name. If you use the second one in
an index, it will think you mean the first one, but shouldn't cause any
major problems.
When the vertical slider is enabled after insert or update etc, intuition
does not remove the shading. RefreshGList() does not work and I haven't
got around to redrawing the border yet. It still functions though.
Error handling is still less than adequate. Out of Memory errors
will cause the program to fail with an error message rather than give
a warning for you to free some memory.
Disk errors will also cause an immediate termination.
The program has been reasonably tested, but only on my A500. Some bugs
refuse to show up until you hit exactly the right combination of
conditions, so please let me know of any problems you find.
======================= WEAKNESSES ===========================
QuickFile is lacking in several areas. These may be enhanced in future
Searching
The searching facilities are very basic. It should provide equal, less
than, greater than, between etc.
Form Design
There is no provision to design your own forms (displays or reports).
This also may be added in future.
Calculations
There is no facility for totalling, or calculating a column based on
other columns.
Label printing
You can print single strip labels but it is a bit of a kludge.
Saving views and reports
You cannot save your preferred window position and size or the format
or settings for a report you have printed.
Field Length
While up to 250 characters are allowed per field, this is not very
useful as each field is limited to one line.
========================== LIMITS ===============================
Number of Records per File
The theoretical limit is something like 16 million depending on block
and record sizes. In practice this will be limited by the indexing
technique which will run out of either memory or processor speed.
Each data record has a 4 byte entry in each index, and each index must
fit in a single chunk of memory. The actual memory requirement per
index is 4(n + 200), where n is the number of data records in the file.
My largest file is about 2800 records (115 chars per record) and it
is fine.
While files can be larger than available memory, it will run much
faster if you can set the number of buffers large enough to contain
the whole file.
I would be interested to hear from anyone using it with larger files.
Number of fields per record
255. But I got bored at about 60, so you take your chances if you want
to try more.
Maximum characters per field
250
Number of indexes
More than you should ever use. It will probably crash if you exceed
the maximum allowed number of sub menu items.