Copyright: ©1997-2000 TurboPower Software Company. All rights reserved.


Chapter 4: FlashFiler Explorer
Welcome to FlashFiler Explorer

FlashFiler Explorer is a database management utility that works in tandem with one or more FlashFiler Servers. FlashFiler Explorer allows you to:

• 	Create, edit, and delete databases for a FlashFiler Server

• 	Create and view table structures and indexes

• 	Restructure existing tables

• 	View and edit table data

• 	Select records using SQL queries

• 	Filter and search records within tables

• 	Import data from external files

FlashFiler Explorer is a largely menu driven application. Operating FlashFiler Explorer is generally working with server, database, or table objects through context menus.


Operating FlashFiler Explorer

When started, FlashFiler Explorer lists all active FlashFiler Servers that are available on the network. An outline displays the hierarchical structure of the FlashFiler network. FlashFiler Servers are the topmost level of the hierarchy. Only servers that are currently running are shown. You can expand the view into a FlashFiler Server by clicking the plus sign next to the server entry in the outline. This also attaches you to the selected server.

The next level of the hierarchy lists all of the databases defined for the server. You can expand the view into a database by clicking the plus sign next to the database entry.

The lowest level of the hierarchy lists all of the tables defined within a database. Double clicking a table displays its contents in a separate Table Browser window. You can even view multiple tables simultaneously. See The Table Browser for more information.

Clicking the minus sign next to an expanded level collapses that level of the hierarchical view. Right click on any object (server, database, or table) to display its context menu. Most of the work you do with these objects will be through the server context menu, the database context menu and the table context menu. The main menu at the top of the dialog box provides configuration options and a few simple functions.


The Server Context Menu

In the FlashFiler Explorer main dialog, select a server and then right-click to display the server context menu.

Menu Option	Purpose
Attach	Attaches to the selected FlashFiler Server. Note that you can also attach to a server by clicking the plus sign next to the server in the outline hierarchy. If you are attempting to attach to a secure server, you are asked to provide a username and password.
Detach	Detaches FlashFiler Explorer from the selected FlashFiler Server (if attached). All open tables are closed and all database connections are dropped.
Register	Allows you to enter a server name in the list of registered servers. FlashFiler Explorer uses a broadcast request to find available FlashFiler Servers. It lists all of the FlashFiler Servers that respond to the broadcast in the hierarchical list on the main screen. However, some FlashFiler Servers do not respond to broadcast requests such as those accessible via an internet connection. To display such FlashFiler Servers in the hierarchical list, FlashFiler Explorer maintains a list of registered servers. The registered servers are always shown in the hierarchical list.
Unregister	Removes the currently selected server from FlashFiler Explorer’s list of registered servers.
Refresh	Refreshes the list of active FlashFiler Servers. All existing connections are dropped and FlashFiler Explorer searches the network for all active servers.
New Database	Opens the Add Database dialog box to allow you to create a new database for a FlashFiler Server.


Add Database Dialog Box

Use the Add Database dialog box to create new databases for a FlashFiler Server.

A database is a collection of files in a directory on the network. Client applications refer to the database by an alias because that is more convenient and secure than using the path. In a Delphi or C++Builder client application, you supply the alias name in the AliasName property of the TffDatabase component or the DatabaseName property of the TffTable component.

Field	Purpose
Alias	Enter the name for the new database. The name is not case-sensitive and must be unique for that server.
Path	Provide the directory path on the server PC that contains the files for the tables in the database. If you enter a directory that does not exist, FlashFiler Explorer gives you the option to create the directory. FlashFiler converts the path you enter to a full Universal Naming Convention (UNC) path. A UNC path has the form \\MACHINE\SHARE\FOLDER.
Directory	Select the directory from the list box. If you enter a directory that does not exist, FlashFiler Explorer gives you the option to create the directory. FlashFiler converts the path you enter to a full Universal Naming Convention (UNC) path. A UNC path has the form \\MACHINE\SHARE\FOLDER.
Drive	Select the drive on which the required directory exists.

Note: Ensure the path is relative to the server. If your server is not on the same machine as FlashFiler Explorer, the server will not recognize a path that is relative to the client machine.


The Database Context Menu

In the FlashFiler Explorer main dialog, select a database and then right-click to display the database context menu.

Menu Option	Purpose
New Database	Creates a new database for a FlashFiler Server. The Add Database dialog box is displayed.
Remove	Removes the selected database alias from the FlashFiler Server. The physical files associated with the database are not deleted.
Rename	Allows you to rename the selected database alias.
SQL	Opens an SQL window, allowing you to test queries using SQL statements.
Refresh	Refreshes the list of databases for this server. This is important only if other users on the network have added new databases (or deleted them) since you started FlashFiler Explorer.
New Table	Opens the Define New Table dialog box so that you may create a new FlashFiler table.
Import	Opens the Import Data dialog box to allow importing data from an external file into a FlashFiler table.


Import Data Dialog Box

Familiarize yourself with the requirements for data files to be imported into FlashFiler before you use this dialog box.

Field	Purpose
Table Name	Select the FlashFiler table into which the data is to be imported, or enter a new table name to create a table.
Append	Preserves any existing data.
Overwrite	Destroys existing data.
Import from File	Specifies the name and path of the file to import.
Records Per Transaction	Determines how often transactions are committed. See the Transaction entry in the Glossary of the printed documentation for more information about transactions.
Import	Loads the data into the FlashFiler table.


Requirements for import
Requirements for Data Files to be Imported

The FlashFiler Explorer import function allows you to import data from fixed ASCII, typed binary, or B-Tree Filer files into FlashFiler tables. You can import into an existing FlashFiler table or have FlashFiler automatically create a new table based on the source file’s structure. A schema file is required so that FlashFiler knows how to interpret the layout of the data file being imported. Schema files must have the same name as the import data file, but with the extension SCH.

Details of data conversion errors encountered or records skipped are written to a log file. The log file is created in the same directory as the import file, with the same filename, and with the extension LOG.

If you have an existing BDE table and need to produce a fixed ASCII file suitable for import, use the BDE Export to ASCII export utility  (BETA). BETA is a data export utility supplied with FlashFiler. It allows you to create a fixed ASCII data file from any supported BDE table. BETA also automatically generates the schema file to accompany the exported data. BETA is located in FlashFiler’s BETA subdirectory.

FlashFiler also includes a complete conversion program to convert any BDE table to a FlashFiler table. The utility, for which source is provided, is called BDE2FF (short for BDE to FlashFiler) and can be found in FlashFiler’s BDE2FF folder.

If you need to import data from a FlashFiler 1 table, use the FFCnvrt utility or the FFCnvrtC command line conversion utility. The conversion executables and help file are located in the Bin Subdirectory of your FlashFiler installation. The source code for each utility is located in the Convert subdirectory.


Schema Files

To import a data file into FlashFiler, you must provide a schema file, which defines the layout of the data file. A schema file is a plain text file similar to a Windows INI file.

FlashFiler schema files are based on the schema files originally defined by Delphi to support ASCII text files as tables. The Delphi schema files are documented in the Borland Database Engine Online Help as ASCIIDRV.TXT. FlashFiler adds additional keywords and qualifiers to this basic schema file concept. Delphi and C++Builder schema files support data files with variable length records (delimited ASCII). However, FlashFiler supports only data files with fixed length records.

Schema File Example

DATEMASK Keyword

FIELD Keyword

FILETYPE Keyword

RECLENGTH Keyword


Schema File Example

Following is an example schema file:

[employee]

FILETYPE=ASCII

DATEMASK=M/D/Y H:M:S T

FIELD1=EMP_NO, NUMBER, 6, 0, 0

FIELD2=FIRST_NAME, CHAR, 15, 0, 6

FIELD3=LAST_NAME, CHAR, 20, 0, 21

FIELD4=PHONE_EXT, CHAR, 4, 0, 41

FIELD5=HIRE_DATE, TIMESTAMP, 30, 0, 45

FIELD6=BIRTH_DATE, DATE, 6, 0, 75, YYMMDD

FIELD7=DEPT_NO, CHAR, 3, 0, 81

FIELD8=JOB_CODE, CHAR, 5, 0, 84

FIELD9=JOB_GRADE, NUMBER, 6, 0, 89

FIELD10=JOB_COUNTRY, CHAR, 15, 0, 95

FIELD11=SALARY, FLOAT, 20, 2, 110

FIELD12=FULL_NAME, CHAR, 37, 0, 130

The first line contains the name of the data file (without extension) in brackets. This value is required. It is followed by one or more keyword = value pairs, each on a separate line. The valid keywords are FILETYPE, RECLENGTH, DATEMASK, and FIELD. The RECLENGTH and DATEMASK keywords are FlashFiler extensions to the Delphi schema file format.


FILETYPE Keyword

The FILETYPE keyword indicates which type of file will be imported. Use FILETYPE=ASCII for files of fixed-length ASCII records, FILETYPE=BINARY for files of fixed-length typed binary records, or FILETYPE =BTF for files of fixed-length B-Tree Filer records.

All fields in an ASCII import file contain a string of characters denoting the field’s value. Typed binary files can contain strings for character data, but can also contain binary encoded values for fields such as numeric, dates, and currency. Delphi files declared as FILE OF RECORD are considered typed binary files, but any file with fixed-length records and data values that can be translated into FlashFiler data types can be used.


RECLENGTH Keyword

RECLENGTH is the total number of bytes in the record. It is required for typed binary import files, optional for ASCII import files, and ignored for B-Tree Filer import files (the record length is determined automatically from the B-Tree Filer header).

If RECLENGTH is not defined for an ASCII import file, the record size is computed from the last field descriptor and a terminating CRLF is assumed. RECLENGTH is required if records are not terminated by CRLF, or if the last field descriptor does not extend to the end of the record (i.e., some fields are being skipped).

The RECLENGTH keyword is a FlashFiler extension to the Delphi schema file format.


DATEMASK Keyword

Since date and time values stored as ASCII text can be formatted a number of different ways, you must specify the format. The DATEMASK keyword provides a picture mask that describes the format of all date and time string fields. The following table illustrates the result of sample date masks.

Input Data	Date Mask
3/11/97	M/D/Y
970311	YYMMDD
11.3.97	D.M.Y
3/11/97 6:04:22 PM	M/D/Y h:m:s t
3-11-1997 18:04:22.552	M-D-Y h:m:s
11-3-1997 18.04.22	D-M-Y h.m.s

The default date mask is M/D/Y h:m:s t.

Date masks consist of formatting characters and delimiters. Formatting characters, such as ‘Y’, ‘M’, and ‘D’, indicate where to find each element of the field (year, month, or day). Delimiters, like ‘/’, ‘:’, or ‘-’, are used as separators. Delimiter characters are used exactly as specified in the date mask; there is no conversion to international settings on the host machine, since what matters is how they are stored in the import file.

All date formatting characters are uppercase and all time formatting characters are lower case. The following table defines the characters that can be used as formatting characters in a date mask.

Char	Marks Location Of
D	Day
M	Month
Y	Year
h	Hours
m	Minutes
s	Seconds
t	AM or PM, for example

In most cases, only a single formatting character of each type is necessary. For example, ‘M/D/Y’ is sufficient. ‘MM/DD/YYYY’ is not necessary, but doesn’t hurt. All non-white space characters between the delimiters are accepted as data for that element of the field. The number of formatting characters is crucial only when there are no delimiters. For example, in a date mask of YYMMDD, the number of digits for each element of the date must be determined by the number of formatting characters in the date mask.

If a time value contains fractional seconds, for example 18:04:22.552, the fraction is dropped and only the whole number of seconds is saved when importing.

The date mask applies to all date and time fields in the import file. If a date mask contains both date and time components, and a field in the import file contains just a date or just a time, only the relevant part of the date mask is used for that field. If a field contains date or time data formatted differently than specified by DATEMASK, then a date mask that is valid only for that field can be added in its field descriptor (see FIELD Keyword). The DATEMASK keyword is a FlashFiler extension to the Delphi schema file format.


FIELD Keyword

The FIELD keyword provides a field descriptor for each field to import. When FlashFiler automatically creates a table (i.e., the data is not imported into an existing table), the fields are defined in sequence based on the FIELD keywords. A field in an import file can be skipped by omitting the field descriptor for it, or by providing a field name that does not match any field in the target FlashFiler table.

Field descriptors have the following format:

FIELDn=<field name>, <datatype>, <field width>,

  <decimal places>, <offset> [,<date mask>]

where n is a unique number identifying the field descriptor.

Field name is the name as it appears in the FlashFiler table. Fields in the import file are matched to fields in the FlashFiler table by field name. Case is ignored when this match is performed. If the FlashFiler table is being automatically created, the field names are defined in the order and case in which they are specified in the schema file.

Data type is the data type of the field, as it will be imported into FlashFiler. The valid data types are described in the next section.

Field width is the number of bytes this field occupies in the import file.

Decimal places is the number of digits after the decimal point (for floating-point data types only).

Offset is the number of bytes from the beginning of the import record to the beginning of the field (zero-based).

Date mask is for DATE, TIME, or TIMESTAMP fields only and defines the format of the data. This date mask is required only if the format of the data differs from the format specified by the DATEMASK keyword (or the default date mask).


Define New Table dialog
Define New Table Dialog Box

To create a new table, enter the name of the table in the Table name edit box. The table name must be unique within a database. Table names may contain any character except double quotes, *, ., /, :, <, >, ?, \, or |. Table names can be no more than 31 characters.

After naming the table, select a block size for the main data file from the Block size combo box. See the Blocks entry in the Glossary of the printed documentation for more information on block sizes.

The Define New Table dialog box has two tabs:

•	Use the Fields tab to define the fields in the table.

•	Use the Indexes tab to define the indexes for the table.

Three buttons at the bottom of the dialog box perform global changes in the table:

Button	Result
Import	Opens the Import Table Definition dialog box, which is a list of all tables available in the active database. Selecting a table from the list imports the block size, fields, and indexes from the existing table into the new table.
Create	Saves the new table in the active database.
Cancel	Cancels all changes and new information.


New Table/Fields
Defining Fields in a New Table

Selecting the Fields tab in the Define New Table dialog box opens a page with the following choices to define the fields in a table:

Column	Meaning
Name	The name by which you reference the field in client applications. A field name can be up to 31 characters long and can contain any characters.
Data Type	Selects the FlashFiler data type of the field. Data types are described in the FlashFiler Data Types section of the Appendix in the printed documentation.
Units	The meaning of this column differs among data types. For string types, Units is the maximum number of base string characters the field can contain. For numeric data types, Units indicates the total number of digits to display (including left and right of the decimal point, if any).
Decimals	For real number data types (e.g., single, double), Dec Pl is the number of digits that should be displayed to the right of the decimal point.
Required	Indicates if the field is required to contain a value (i.e., it cannot contain a null value).
Default	When a record is inserted into the table, the default value is applied to the field if the field does not contain a value (i.e. it is null). Using a default value for fields in a unique index may cause key violations. A key violation is raised when an attempt is made to insert a record with non-unique fields for a unique index.
Description	Stores a description of the field. The description can be up to 63 characters in length.
The following buttons are navigation and management tools for the field list:

Buttons	Result
Insert	Inserts a new field in the table. A field must be selected in the field list. The new field is inserted before the selected field.
Delete	Deletes the selected field.
Move Up	Scrolls up the list of fields.
Move Down	Scrolls down the selected field list.

The BLOB Storage group specifies how BLOB data is stored.

Field	Purpose
Within main file	Selected by default, this radio button causes FlashFiler to store the BLOB data in the main data file.
External file	Specifies the BLOB data should be stored in an external file.
File extension	Only active if External file is selected, the file extension for the external BLOB file.
Block Size	Only active if External file is selected, the block size for the external BLOB file.
Description	A description of the External BLOB file.


New Table/Indexes
Defining Indexes in a New Table

Selecting the Indexes tab in the Define New Table dialog box opens a page with the following choices to define the indexes for a table:

Column	Meaning
Name	You must supply a Name to uniquely identify each index in the table. Index names can be up to 31 characters long and can contain any characters.
Type	Indicates the type of index: composite key index or user-defined index.
Key size	For composite key indexes, the key length is automatically computed and displayed in this column. For user-defined indexes, you must provide the number of bytes, because it is dependent on how you define the index.
Unique	Check this box if all key values for this index are unique (no duplicate values are allowed in the index fields). Using a default value for fields in a unique index may cause key violations. A key violation is raised when an attempt is made to insert a record with non-unique fields for a unique index.
Ascend	Check this box if the sort order for the index is ascending (key values ordered from smallest to largest). Leave it unchecked for a descending index. Note that when you include multiple fields in your index, all fields must be either ascending or descending. You will have to implement a user-defined index or use an SQL statement to have more control over the sorting of data.
File ext	By default, indexes are stored in the main data file. If you want the index data stored in an external file, you must enter a file extension in this column. The filename is the same as the base table name. The file extension must be unique among all files comprising the table (e.g., main data file, other indexes, BLOB file).
Block size	If indexes are stored in an external file, specify the block size of the file in this column. This is the smallest block of the index file that the server reads and stores in memory at one time.
Description	You can optionally enter up to 63 characters of text to describe the index. This information is displayed only by FlashFiler Explorer.
The Delete Index button deletes the index selected in the index list.

Composite Key Group

Composite indexes simply define a sequence for the record based on the sort order of the values in one or more fields in the record. The actual fields that comprise the composite index are defined in the Composite Key group. These controls affect the index that is currently selected in the index list at the top of the dialog box. This group is disabled if the index name has not been filled in or it is not a composite key index.

Move the desired fields from the Available Fields list to the Fields in Index list by selecting the fields and dragging and dropping the fields between the two lists. Double-clicking a field also moves it to the other field list. To change the relative position of the fields within the index, select a field in the Fields in Index list and move it up or down using the arrow buttons.


User-Defined Indexes

FlashFiler allows you to extend the standard database-style indexes, where keys are built on one or more fields that exist in a record. User-defined indexes provide you with the opportunity to reach into the FlashFiler indexing mechanism and alter it for your own purposes.

A classic case that lends itself to the use of a user-defined index is that of a Soundex key. Soundex is an algorithm for generating a phonetic string that represents an English name. Assume that you have a Soundex algorithm. To implement a Soundex key, you could expand the record layout to include a Soundex value field, along with the name field from which it was calculated. You could easily build an index on this new field. However, there are drawbacks to this scheme. Even though the record size increased, no more useful information was added to the record (in fact, it is more of a duplication of information). Over several thousand, or tens of thousands of records, that is a large amount of wasted space. The second drawback is that you must ensure that the Soundex field is recalculated every time the name field changes.

The alternative is a user-defined index. It provides a way for you to write your own key creation and key comparison routines, register them with FlashFiler, and have them used for a specified table and index. In this example, you would write a routine to calculate the Soundex value as a key and a routine to compare two Soundex values. FlashFiler takes care of the rest. When FlashFiler needs the key for a record, it calls your build key routine. When FlashFiler needs to compare two keys, it calls your key comparison routine. This creates an index that requires no extra space in the record and one which does not require you to ensure that special values are consistently recalculated.

Your two routines must be compiled into a DLL, and the DLL must be registered with the FlashFiler Server via the User-defined indexes option in the Config menu.


SQL Query Window

The SQL query window allows you to select records using SQL statements, and manage and execute multiple queries.

At the top of the SQL dialog box is a toolbar with the following speedbuttons:

Button	Function
Execute	Executes the SQL statement you type in the SQL Input window.
Stop	Cancels the SQL statement that is currently executing.
Save	Saves your current query to a file for later retrieval.
Load	Retrieves a saved query file.
New	Starts a new query within the dialog box. The SQL dialog box allows you to manage and execute multiple queries. Each query is executed within a separate connection to the server.
Properties	Allows you to configure options for the SQL window and the current connection.
Use the combo box to the right to switch between open queries. The Ctrl + UpArrow and Ctrl + DownArrow keys may also be used to switch between queries.

Below the toolbar is the SQL Input window. This is where you type the SQL statement to be executed when you press the Execute button.

The grid at the bottom of the page displays the SQL result set. You can navigate the result set using the buttons at the top of the Result Set window. The navigational buttons are described in The Table Browser navigator buttons.

The Status Bar along the bottom of the dialog box displays the status of the current query, number of active connections, record count of the resulting set, and whether the current result set is editable.


The Table Context Menu

In the FlashFiler Explorer main dialog, select a table and then right click to display the table context menu.

Menu Option	Purpose
View Definition	Displays the Table Definition dialog box, which shows the field layout and indexes for the selected table. The information shown here is similar to the Define New Table dialog box but you cannot modify the table’s structure from this dialog.
View Indexes	Displays the Table Definition dialog box with the table’s indexes shown first. The information shown here is similar to the Define New Table dialog box except that you cannot modify the table’s structure from this dialog.
New Table	Allows you to define the field layout and indexes for a new FlashFiler table. The Define New Table dialog box is displayed.
Delete	Removes the selected table from the database. All data files associated with the table are physically deleted.
Rename	Allows you to rename the selected table.
Pack	Starts a table pack operation, which removes all deleted records from the table. If the table is large, this can be a lengthy process.
Reindex	Starts a table reindex operation, which rebuilds the keys for a selected index in the table. If the table is large, this can be a lengthy process.
Redefine	Opens the Redefine Table dialog box that allows you to change the field layout and indexes for an existing table.
Import	Imports data from an external file into a FlashFiler table. The Import Data dialog box is displayed.
Set AutoInc	Assigns a specific seed to the AutoInc value. Normally, AutoInc values begin at 1 and increment by 1 as they are used. This option allows you to set the AutoInc to a value of your choosing. The AutoInc field of the next record inserted will have the value you set plus 1. Existing AutoInc values are not altered.
Empty	Deletes all records from the table, but retains the table’s structure.


Redefine Table Dialog Box

The Redefine Table dialog box allows you to change any aspect of an existing table’s structure, but typical uses are to add a new field, remove an existing field, or change the name or data type of a field.

The dialog box has three pages. The Fields and Indexes pages work just like the pages in the Define New Table dialog box. The only difference is that you have an existing structure to work with. You can add, delete, or change any of the information in the table.

After you have changed the information in the Fields page, the Existing Data page allows you to determine how existing data is translated into the new structure. The simplest approach is to abandon the existing data. If the Preserve Existing Data check box is not checked, the table is redefined, all existing data is irretrievably lost and you have, in effect, created a completely new table. To preserve part or all of the existing data, you must provide a field map using the Existing Data page.

The Existing Data page has two tabs: Field Map and Orphaned Fields.

The Field Map tab organizes the new information with the old information in three columns so that you can link a field in the new structure with a field in the original structure.

Column	Purpose
New Field Name	The names of fields that are new or edited.
Data Type	The data type assigned to each new field. This information comes from the Fields page and is assigned at the time the field is created or altered.
Old Field	Each row in this column is a combo box that contains any fields from the original structure that are assignment compatible with the new field and that have not already been mapped to a new field. For example, you cannot map an old datetime field to a new Boolean field. See Converting Data Types for a list of the legal data type conversions.

The Orphaned Fields tab displays a list of all the original fields that are not mapped to a new field. If any orphaned fields remain when you click the Restructure button, the data in those fields is lost. Similarly, if any new fields are not mapped to an old field, the new fields are filled with a null value (or default value if assigned) in the restructured table.

Three buttons help simplify the field assignments:

Button	Result
Match By Name	Automatically map old fields to new fields with matching field names (assuming they are of compatible data types)
Match By Position	Automatically map old fields to new fields occupying the same ordinal position in the record (assuming they are of compatible data types)
Clear Assignments	Erases all old field assignments in the field map

Three buttons at the bottom of the dialog box offer global functions:

Button	Result
Import	Opens the Import Table Definition dialog box, which is a list of all tables available in the active database. Selecting a table from the list imports the block size, fields, and indexes from the existing table into the new table.
Restructure	Copies the data in the old field into the new field
Cancel	Cancels all changes, restructuring, or editing of fields.


Converting Data Types

When you redefine a FlashFiler table, you can choose to save the existing data in the table. When this is done, you must provide a field map indicating which old fields should be mapped to which new fields. However, not all physical data types can be converted to all other data types. The following table lists the valid physical data type conversions.

Data Type	Can Be Converted To
fftByte	fftWord16, fftWord32, fftInt8, fftInt16, fftInt32, fftSingle, fftDouble, fftExtended, fftComp, fftCurrency, fftAutoInc
fftWord16	fftWord32, fftInt32, fftSingle, fftDouble, fftExtended, fftComp, fftCurrency, fftAutoInc
fftWord32	fftSingle, fftDouble, fftExtended, fftComp, fftCurrency, fftAutoInc
fftInt8	fftInt16, fftInt32, fftSingle, fftDouble, fftExtended, fftComp, fftCurrency
fftInt16	fftInt32, fftSingle, fftDouble, fftExtended, fftComp, fftCurrency
fftInt32	fftSingle, fftDouble, fftExtended, fftComp, fftCurrency
fftSingle	fftDouble, fftExtended, fftCurrency
fftDouble	fftExtended, fftCurrency
fftExtended	fftCurrency
fftComp	Cannot convert to any other datatype
fftChar	fftShortString, fftShortAnsiString, fftNullString, fftNullAnsiString, fftWideChar, fftWideString
fftShortString	fftChar, fftShortAnsiString, fftNullString, fftNullAnsiString, fftWideChar, fftWideString
fftShortAnsiString	fftChar, fftShortString, fftNullString, fftNullAnsiString, fftWideChar, fftWideString
fftNullString	fftChar, fftShortString, fftShortAnsiString, fftNullAnsiString, fftWideChar, fftWideString
fftNullAnsiString	fftChar, fftShortString, fftShortAnsiString, fftNullString, fftWideChar, fftWideString
fftWideChar	fftChar, fftShortString, fftShortAnsiString, fftNullString, fftNullAnsiString, fftWideString
fftWideString	fftChar, fftShortString, fftShortAnsiString, fftNullString, fftNullAnsiString, fftWideChar
fftDateTime	fftStDate, fftStTime
fftStDate	fftDateTime
fftStTime	fftDateTime
fftAutoInc	fftWord32, fftSingle, fftDouble, fftExtended, fftComp, fftCurrency
fftBoolean	fftByte, fftWord16, fftWord32, fftInt8, fftInt16, fftInt32 (the result is 1 for True or 0 for False) fftChar, fftShortString, fftShortAnsiString, fftNullString, fftNullAnsiString, fftWideChar, fftWideString (the result is Y for True or N for False)
fftByteArray	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftCurrency	fftExtended
fftBLOB	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBMemo	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBTypedBin	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBFmtMemo	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBOLEObj	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBDBSOLEObj	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBGraphic	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic
fftBLOBFile	fftBLOB, fftBLOBMemo, fftBLOBTypedBin, fftBLOBOLEObj, fftBLOBFmtMemo, fftBLOBDBSOLEObj, fftBLOBGraphic


The Table Browser

When a table object is double clicked on the Explorer’s main screen, a Table Browser displays the table’s data. The Table Browser has a menu that offers options for displaying data, a main window that offers navigation and search controls, and a status bar at the bottom of the Table Browser’s window that shows you the record count for the current record set and the current filter.


The Table Browser's Menu

The Table Browser menu offers a few options for displaying data in the window.

Menu Option	Result
Table | Close	Closes the Table Browser window
View | Show Filter	If this option is checked, you are presented with an edit box that allows you to enter a filter and a Set Filter button to apply the filter. The edit box and button are not displayed if this option is not checked.
View | Show Record Count	If this option is checked, the record count for the current record set is displayed in the status bar across the bottom of the Table Browser’s window. Disabling (unchecking) this option may speed up browsing of large tables when a filter has been applied.
View | Refresh	Updates the Table Browser’s data. This is only important if other FlashFiler clients are modifying the selected table.


Table Browser Window
The Table Browser Window

At the top of the Table Browser window are edit fields and buttons that control navigation, sorting, and searching through the data in the table:

Field	Purpose
Index	Sorts the data by a particular field or fields as defined by the chosen index.
Find nearest	If you choose an index other than the sequential index, you can search the fields of the index by entering a value in this edit box and clicking the Find button. The value must match the data type of the corresponding field in the current index.
Find	If you choose an index other than the sequential index, you can search the fields of the index by entering a value in the Find nearest edit box and clicking this button.
Filter	Enter the field name and the value by which you wish to filter the records displayed in the grid. For example, Age >= 30 filters out all records of people under the age of 30 in a personal data table. This edit box is display only if the Show Filter option in the View menu is checked. While the filter is active, the button next to the edit box reads Clear Filter. Press the Clear Filter button to remove the filter and view all records in the table.
Set/Clear Filter	Sets or clears the filter displayed in the Filter edit box. If the filter is not active, the button reads Set Filter. If the filter is active, The button reads Clear Filter. This button is displayed only when the Show Filter option in the View menu is checked.
The navigator buttons at the bottom of the table browser help you navigate through the table. The first four buttons are always available. The last five buttons are only available if Live Datasets is enabled on the main screen options. Live Datasets allow you to edit, insert, and delete data in the table. The navigator buttons perform the functions described in the following table:

	Move to the first record in the table.
	Move to the previous record.
	Move to the next record.
	Move to the last record in the table.
	Insert a new record. You can enter data in each column and then either click the button with the check mark on it or select another row to save the changes. Click the button with the ‘x’ on it or press <Esc> to cancel the changes and discard the new record. Available only if Live Datasets is enabled on the main screen Options menu.
	Delete the current record. Available only if Live Datasets is enabled on the main screen Options menu.
	Edit the current record. Available only if Live Datasets is enabled on the main screen Options menu.
	Save the changes made to the current row. Available only if Live Datasets is enabled on the main screen Options menu.
	Cancel the changes made to the current row (the original values are restored). Available only if Live Datasets is enabled on the main screen Options menu.


The Main Menu

Nearly all the operations in FlashFiler Explorer are accessed via the context menus discussed previously. However, the main menu in the FlashFiler Explorer main dialog box provides simple functions and configuration options.

The Server Menu

The Options Menu

The Help Menu


The Server Menu

Menu Option	Result
Refresh	Refreshes the list of active FlashFiler Servers. All existing connections are dropped and FlashFiler Explorer searches the network for all active servers.
Register	Allows you to enter a server name in the list of registered servers. See Register in the Server Context Menu for details about registered servers.
Exit	Terminates FlashFiler Explorer.


The Options Menu

Menu Option	Result
Live Dataset	When this option is checked, the data shown in the table browser can be modified.
Print Setup	Displays the Print Setup dialog so you can choose a printer and print options.
Transport	FlashFiler can operate in single-user mode and across a network for multi-user access. In single-user mode, your client applications and FlashFiler Server operate on the same machine. In multi-user mode, FlashFiler Server can be accessed from the same machine and remotely across a network on a different machine than the client applications.
	You specify how FlashFiler Explorer communicates with FlashFiler Server by selecting the transport from the submenu. Select Single-User, Winsock IPX/SPX (network access), or Winsock TCP/IP (network access). FlashFiler Explorer finds and communicates only with FlashFiler Servers that have enabled the selected transport.
	We recommend using Single User transport when FlashFiler Explorer in on the same machine as the server. If they are not on the same machine, we suggest using TCP/IP.


The Help Menu

Menu Option	Result
Help Topics	Displays the FlashFiler Explorer on-line help.
About	Displays information about FlashFiler Explorer.
Visit TurboPower's Website	Starts your web browser with the address of the TurboPower Software Web site.
Send Mail to TurboPower	Initializes a new email message addressed to our mail support using your default email reader.