DataDirect Connect ODBC for Paradox

Copyright 1998 INTERSOLV Inc. All rights reserved. INTERSOLV and DataDirect are registered trademarks of INTERSOLV, Inc. Connect ODBC is a trademark of INTERSOLV, Inc. Other company or product names mentioned herein may be trademarks or registered trademarks of their respective companies.


About Connect ODBC for Paradox

Connect ODBC for Paradox (the “Paradox driver”) supports Paradox 3.0, 3.5, 4.0, 4.5, 5.0, 7.0, and 8.0 tables.

The driver file name is IVIDPnn.DLL, where nn is the revision level.


Paradox System Requirements
System Requirements

To use the Paradox driver, you must install the Borland Database Engine, which conforms to the IDAPI programming interface. The Borland Database Engine can be found in any of the following software packages:

Borland C++ for Windows NT and Windows 9x, version 5

Delphi for Windows NT and Windows 9x

Paradox 7 or 8 for Windows NT and Windows 9x

error

If you attempt to configure a data source and you do not have IDAPI32.DLL on your path or in your Windows 9x \SYSTEM directory or Windows NT \SYSTEM32 directory, a message similar to the following appears:

The setup routines for the INTERSOLV 3.00 32-BIT ParadoxFile (*.db) ODBC driver could not be loaded due to system error code 126.

When you click OK, the following message appears:

Could not load the setup or translator library.


Multiuser Access to Paradox Tables (Paradox Driver)
Multiuser Access to Tables

You can query Paradox tables that reside in a shared directory on a network or that are to be shared among applications running on a local workstation. If the tables are on a network server, multiple users can query these tables simultaneously. To share Paradox tables among multiple users, the tables must be located in a shared directory on your network server.

Two connection attributes identify the Paradox database you are accessing: Database (database directory) and NetDir (network directory). The Database setting specifies the directory of Paradox tables that is the database. If the Database setting you specify is a shared network directory, then Paradox requires a NetDir specification as well. This value identifies the directory containing the PARADOX.NET file that corresponds to the Database setting you have specified.

Every user who accesses the same shared directory of tables must set the NetDir value to point to the same PARADOX.NET file. If your connection string does not specify a NetDir value, then Paradox uses the NetDir value specified in the Paradox section of the IDAPI configuration file. This makes it important that the NetDir specification in each user's IDAPI configuration file be set correctly.

Whenever you open a Paradox table that another user opens at the same time, the consistency of the data becomes an issue if both individuals are updating the table.


Paradox Driver Locking

The Paradox driver has two locking levels:  record locking and table locking. Tables that have no primary key always have a prevent write lock placed on the table when the table is opened. The table lock is escalated to a write lock when an operation that changes the table is attempted.

Tables that have primary keys use record locking. The locking level is escalated from record locking to a table write lock if the transaction runs out of record locks.

Primary keys provide the greatest concurrency for tables that are accessed and modified by multiple users.

Note: If a table lock is placed on a Paradox table, the Paradox driver prevents users from updating and deleting records but does not prevent them from inserting records into the locked table.


Configuring Paradox Data Sources
Configuring Data Sources

To configure a Paradox data source, do the following:

1	Start the ODBC Administrator to display a list of data sources.

2	If you are configuring an existing data source, select the data source name and click Configure to display the ODBC Paradox Driver Setup dialog box.

If you are configuring a new data source, click Add to display a list of installed drivers. Select INTERSOLV ParadoxFile and click Finish to display the ODBC Paradox Driver Setup dialog box.

3	Specify a data source name, a database directory and optionally, a description. Click Apply.

4	Click the Advanced tab  to configure optional data source settings, such as server list and database list. Click Apply.

5	Click Translate to display the Select Translator dialog box, which lists the translators specified in the ODBC Translators section of the system information. INTERSOLV provides a translator named INTERSOLV OEM ANSI that translates your data from the IBM PC character set to the ANSI character set.

Select a translator, then click OK to close this dialog box and perform the translation.

6	Click OK or Cancel. If you click OK, the values you have specified become the defaults when you connect to the data source. You can change these defaults by using this procedure to reconfigure your data source. You can override these defaults by connecting to the data source using a connection string  with alternate values.


Connecting to Paradox Using a Connection String
Connecting to a Data Source Using a Connection String

If your application requires a connection string to connect to a data source, you must specify the data source name that tells the driver which section in the system information to use for the default connection information. Optionally, you may specify attribute=value pairs in the connection string to override the default values stored in the system information. These values are not written to the system information.

You can specify either long or short names in the connection string. The connection string has the form:

DSN=data_source_name[;attribute=value[;attribute=value]...]

An example of a connection string for Paradox is:

DSN=PARADOX TABLES;DB=C:\ODBC\EMP;PW=ABC,DEF,GHI

The paragraphs that follow give the long and short names for each attribute, as well as a description. The defaults listed are initial defaults that apply when no value is specified in either the connection string or in the data source definition in the system information. If you specified a value for the attribute when configuring the data source, that value is your default.

ApplicationUsingThreads (AUT): ApplicationUsingThreads={0 | 1}. Ensures that the driver works with multi-threaded applications. The default is 1, which makes the driver thread-safe. When using the driver with single-threaded applications, you may set this option to 0 to avoid additional processing required for ODBC thread safety standards.

CreateType (CT); CreateType={3 | 4 | 5 | 7 | null (blank)}. The table version for Create Table statements. There are five valid values for this connection string: 3, 4, 5, 7 and null (blank). The numeric values map to the major revision numbers of the Paradox family of products. To override another CreateType setting chosen during data source configuration with the default create type determined by the Level setting in the Paradox section of the IDAPI configuration file, set CreateType=   (null).

Note: When CreateType is set to 7, the Paradox driver supports table names up to 128 characters long. For all other Create Type settings, the driver supports table names up to 8 characters long.

Database (DB); The directory in which the Paradox files are stored.

DataSourceName (DSN): A string that identifies a Paradox data source configuration in the system information. Examples include "Accounting" or "Paradox-Serv1."

For this attribute, you can also specify aliases that are defined in your IDAPI configuration file, if you have one. To do this, enclose the alias name in colons. For example, to use the alias MYDATA, specify Database=:MYDATA:

DeferQueryEvaluation (DQ): DeferQueryEvaluation={0 | 1}. A value that determines when a query is evaluated--after all records are read or each time a record is fetched.

If DeferQueryEvaluation=0, the driver generates a result set when the first record is fetched. The driver reads all records, evaluates each one against the Where clause, and compiles a result set containing the records that satisfy the search criteria. This process slows performance when the first record is fetched, but activity performed on the result set after this point is much faster, since the result set has already been created. You do not see any additions, deletions, or changes in the database that occur while working from this result set.

If DeferQueryEvaluation=1 (the default), the driver evaluates the query each time a record is fetched, and stops reading through the records when it finds one that matches the search criteria. This setting avoids the slowdown while fetching the first record, but each fetch takes longer because of the evaluation taking place. The data you retrieve reflects the latest changes to the database. However, a result set is still generated if the query is a Union of multiple Select statements, if it contains the Distinct keyword, or if it has an Order By or Group By clause.

FileOpenCache (FOC): The maximum number of unused table opens to cache. For example, when FileOpenCache=4, and a user opens and closes 4 tables, the tables are not actually closed. The driver keeps them open so that if another query uses one of these tables, the driver does not have to perform another open, which is expensive. The advantage of using file open caching is increased performance. The disadvantage is that a user who tries to open the table exclusively may get a locking conflict even though no one appears to have the table open. The initial default is 0.

IntlSort (IS): IntlSort={0 | 1}. This attribute determines the order that records are retrieved when you issue a Select statement with an Order By clause. If IntlSort=0 (the initial default), the driver uses the ASCII sort order. This order sorts items alphabetically with uppercase letters preceding lowercase letters. For example, “A, b, C” would be sorted as “A, C, b.”

If IntlSort=1, the driver uses the international sort order as defined by your operating system. This order is always alphabetic, regardless of case; the letters from the previous example would be sorted as “A, b, C.” See your operating system documentation concerning the sorting of accented characters.

NetDir (ND): The directory containing the PARADOX.NET file that corresponds to the database you have specified. If the Paradox database you are using is shared on a network, then every user who accesses it must set this value to point to the same PARADOX.NET file. If not specified, this value is determined by the NetDir setting in the Paradox section of the IDAPI configuration file. If you are not sure how to set this value, contact your network administrator.

Passwords (PW): A password or list of passwords. You can add 1 to 50 passwords into the system using a comma-separated list of passwords. Passwords are case-sensitive. For example, Passwords=psw1, psw2, psw3.

UltraSafeCommit (USF): UltraSafeCommit={0 | 1}. A value that determines when the driver flushes its changes to disk. If UltraSafeCommit=1, the driver does this at each Commit. This decreases performance. The default is 0. This means that the driver flushes its changes to disk when the table is closed or when internal buffers are full. In this case, a machine failure before closing a table may cause recent changes to be lost.

UseLongQualifiers (ULQ): UseLongQualifiers={0 | 1}. This attribute specifies whether the driver uses long path names as table qualifiers. With UseLongQualifiers set to 1, path names can be up to 255 characters. The default is 0; maximum path name length is 128 characters.


Paradox Data Types
Data Types

The following table shows how the Paradox data types are mapped to the standard ODBC data types. It also identifies the types supported by Paradox versions 3.x and 4.x. These Paradox data types can be used in a Create table statement.

Paradox	ODBC	3.x Support	4.x Support
Alpha	SQL_VARCHAR	Yes	Yes
AutoIncrement	SQL_INTEGER	No	No
BCD	SQL_DECIMAL	No	No
Binary*	SQL_LONGVARBINARY	No	Yes
Bytes*	SQL_BINARY	No	No
Date	SQL_TYPE_DATE	Yes	Yes
Formatted Memo*	SQL_LONGVARBINARY	No	Yes
Graphic*	SQL_LONGVARBINARY	No	Yes
Logical*	SQL_BIT	No	No
Long Integer	SQL_INTEGER	No	No
Memo*	SQL_LONGVARCHAR	No	Yes
Money	SQL_DOUBLE	Yes	Yes
Number	SQL_DOUBLE	Yes	Yes
OLE*	SQL_LONGVARBINARY	No	Yes
Short	SQL_SMALLINT	Yes	No
Time	SQL_TYPE_TIME	No	No
TimeStamp	SQL_TYPE_TIMESTAMP	No	No
*	Cannot be used in an index. Of these types, only Logical can be used in a Where clause.


SQL Statements for the Paradox Driver

You use a SQL Select statement to specify the columns and records to be read. The Paradox driver supports all of the Select statement clauses (described in the General Help for DataDirect ODBC Drivers). Both the Create Table and Alter Table statements support the Default clause. The following topics provide additional information about using SQL with the Paradox driver:

Column Names

Alter Table Statement

Create Table Statement


Paradox Column Names
Column Names

Paradox column names are case-insensitive and their maximum length is 25 characters. If a column name contains a special character, does not begin with a letter, or is a reserved word, surround it with the grave character ( ` ) (ASCII 96). For example:

SELECT `last name` FROM emp


Alter Table Statement

The Paradox driver supports the Alter Table statement to add one or more columns to the table, or to delete (drop) a single column.

The Alter Table statement has the form:

ALTER TABLE table_name {ADD column_name data_type
[DEFAULT default_value] | ADD (column_name data_type [DEFAULT default_value] [, column_name data_type
[DEFAULT default_value]] . . . ) | DROP [COLUMN] column_name [CASCADE | RESTRICT]}

table_name is the name of the table for which you are adding or dropping columns.

column_name assigns a name to the column you are adding or specifies the column you are dropping. See Column Names for more information.

data_type specifies the native data type of each column you add. See Paradox Data Types for more information.

For example, to add two columns to the emp table:

ALTER TABLE emp (ADD startdate date, dept alphanumeric (10))

Dropping Columns

You cannot add and drop columns in a single statement, and you can drop only one column at a time.

When dropping a column, use the Cascade keyword to drop the column while removing references from any dependent objects, such as indexes or views. Use Restrict to cause the Alter Table statement to fail if other objects are dependent upon the column you are dropping. For example, to drop a column and remove its references from dependent objects:

ALTER TABLE emp DROP startdate CASCADE

If the Alter Table statement contains neither Cascade nor Restrict, it fails when you attempt to drop a column upon which other objects are dependent.


Create Table Statement

The Create Table statement is used to create database files. The form of the Create Table statement is:

CREATE TABLE filename (col_definition[,col_definition, ...])

filename can be a simple file name or a full path name. A simple file name is preferred for portability to other SQL data sources. If it is a simple file name, the file is created in the directory you specified as the database directory in the connection string. If you did not specify a database directory in the connection string, the file is created in the directory you specified as the database directory in the system information. If you did not specify a database directory in either place, the file is created in the current working directory at the time you connected to the driver.

col_definition is the column name, followed by the data type, Default clause, followed by an optional column constraint definition. Values for column names are database specific. The data type specifies a column's data type.

The only column constraint definition currently supported by some flat-file drivers is "not null." Not all flat-file tables support "not null" columns. In the cases where “not null” is not supported, this restriction is ignored and the driver returns a warning if "not null" is specified for a column. The "not null" column constraint definition is allowed in the driver so that you can write a database-independent application (and not be concerned about the driver raising an error on a Create Table statement with a "not null" restriction).

A sample Create Table statement to create an employee database table is:

CREATE TABLE emp (last_name CHAR(20)

[DEFAULT default_value] NOT NULL DEFAULT ‘JOHNSON’,

first_name CHAR(12) NOT NULL,

salary NUMERIC (10,2) NOT NULL,

hire_date DATE NOT NULL)


Paradox Password Protection
Password Protection

Paradox supports two types of passwords: master and auxiliary.  The Paradox driver supports master passwords only and can manage up to 50 passwords.

Paradox tables may be encrypted to provide limited access to users who do not know the password. The driver maintains a list of passwords for each connection. The driver can access only encrypted tables for which a password appears in this list. You can supply a password in three ways: by typing it in the Password dialog box (which appears when the driver does not have the password to open an encrypted table), by including it in a connection string (with the Passwords attribute), or by using the Add Password statement.

Paradox provides five statements that manage passwords for Paradox tables. These statements are specific to the Paradox driver:

ENCRYPT filename USING PASSWORD password

ADD PASSWORD password

DECRYPT filename USING PASSWORD password

REMOVE PASSWORD password

REMOVE ALL PASSWORDS

filename can be a simple file name or a full path name. If a simple file name is given, the file must be in the directory specified with the Database connection string attribute. The .DB extension is not required.

password is a case-sensitive text string up to 15 characters in length, including blanks. If your password includes lower-case letters or nonalphanumeric characters, enclose it in single quotation marks (').

Encrypting a Paradox Table

The Encrypt statement associates a password with a table. For example:

ENCRYPT emp USING PASSWORD test

Accessing an Encrypted Paradox Table

To access an encrypted Paradox table, add the password to the list of passwords Paradox maintains for that connection. To do so, you can:

Issue an Add Password statement before you access the table. For example:

ADD PASSWORD test
SELECT * FROM emp

Specify the passwords using the Passwords attribute at connection time.

If you do not add the password, the driver prompts you for it when you access the table.

Decrypting a Paradox Table

The Decrypt statement disassociates a password from a table. You no longer need to enter the password to open the table. For example:

DECRYPT emp USING PASSWORD test

Removing a Password from Paradox

The Remove Password statement removes a password from the list Paradox maintains for the connection. For example:

REMOVE PASSWORD test

Removing All Passwords from Paradox

The Remove All Passwords statement removes the list of passwords Paradox maintains.

If you remove a password from Paradox and do not decrypt the table, you must continue entering the password to open the table.


Index Files for Paradox
Index Files

An index is used to read records in sorted order and to improve performance when selecting records and joining tables. Paradox indexes are stored in separate files and are either primary or non-primary.

Primary Index

A primary index is made up of one or more fields from the Paradox table. The primary key fields of a primary index consist of one or more consecutive fields in the table, beginning with the first field in the table. A table can have only one primary index.

Collectively, the primary key fields uniquely identify each record in the Paradox table. Thus, no two records in a Paradox table can share the same values in their primary key fields. Once a primary index is created for a Paradox table, the table's records are re-ordered based on the primary key fields. At the time a primary index is created, if any records have matching primary key field values, Paradox deletes all but the first record. Paradox creates this index as maintained; that is, if you modify, add, or delete records in the table, the primary index is updated automatically to reflect these changes.

A primary index is a single file with the same name as the table on which it is based but with a .PX extension.

To lock records, you must have a primary index.

Non-Primary Index

Paradox 7 tables support UNIQUE secondary indexes. See Create and Drop Index Statements for more information.

A non-primary index is defined by specifying one or more fields in the Paradox table that constitute the non-primary key field. It allows Paradox to sort each record in the table according to the values of the non-primary key fields.

There are two kinds of non-primary indexes: maintained and non-maintained. A maintained index is automatically updated when the table is changed, whereas a non-maintained index is not. Instead, a non-maintained index is tagged out-of-date and is updated when the index is used again.

You must have a primary index on a table before you create a maintained, non-primary index.

The Paradox driver uses non-maintained indexes only for read-only queries on locked tables. A primary index is not required for the non-maintained index to be used.

For Paradox 3.x, a single non-primary index consists of a pair of files with the same name as the table on which the non-primary index is based; one of these files has an .Xnn extension while the other has a .Ynn extension (where the hexadecimal number nn corresponds to the field number of the non-primary key field for the non-primary index).

For Paradox 4.x, 5, and 7, single-field non-primary indexes that are case sensitive have the same name as their associated table and are assigned file extensions .X01 through .XFF, depending on the number of the field on which the index is based. Single-field non-primary indexes that are case insensitive and composite indexes have the same name as the table on which they are based. They are assigned file extensions sequentially starting with .XG0 (with hexadecimal increments).


Create and Drop Index Statements for Paradox
Create and Drop Index Statements

The Paradox driver supports SQL statements to create and delete indexes. The Create Index Primary statement is used to create primary indexes. The Create Index statement is used to create non-primary indexes. The Drop Index statement is used to delete indexes.

Create Index Primary Statement

The syntax for creating a primary index is:

CREATE [UNIQUE] INDEX PRIMARY
ON table_name (column [,column...])

The UNIQUE keyword is optional; the index is unique whether or not you include this keyword.

table_name is the name of the table on which the index is to be based.

column is the name of a column that is included as a the key field for the index. The column list must contain one or more consecutive fields in the table, beginning with the first field in the table.

For example:

CREATE UNIQUE INDEX PRIMARY ON emp (emp_id)

Be careful when you create a primary key because any rows that have a primary key duplication are deleted when you execute the Create Index Primary statement.

Create Index Statement

For Paradox 3.0, 3.5, 4.0, 4.5, and 5.0 tables, the syntax for creating a non-primary index is:

CREATE INDEX index_name [/NON_MAINTAINED] [/CASE_INSENSITIVE] ON table_name (column [, column...])

For Paradox 7.0 tables, the syntax for creating a non-primary index is:

CREATE [UNIQUE] INDEX index_name [/NON_MAINTAINED] [/CASE_INSENSITIVE] ON table_name (column [DESC] [, column...])

For Paradox 7 tables only (when the Create Type is 7), the optional UNIQUE keyword prevents duplicate values in the non-primary index.

index_name identifies the index. If the name contains blanks or special characters, or does not begin with a letter, surround it with the grave character ( ` ) (ASCII 96).

The NON_MAINTAINED switch makes the index non-maintained. The default is to create a maintained index.

The CASE_INSENSITIVE switch makes the index case-insensitive. The default is to create a case-sensitive index.

table_name is the name of the table on which the index is to be based.

column is the name of a column that is included as a the key field for the index.

For Paradox 7 tables only (when the Create Type is 7), the DESC keyword creates a non-primary index that uses descending keys.

Paradox 3.0 and 3.5 tables cannot have composite or case-insensitive indexes. When you create a non-primary index for Paradox 3.0 and 3.5 tables, follow these rules:

Specify only one column name.

Do not use the CASE_INSENSITIVE switch.

Use the column name as the index name.

For example:

CREATE INDEX last_name ON emp (last_name)

Drop Index Statement

The syntax for dropping a primary index is:

DROP INDEX path_name.PRIMARY

For example:

DROP INDEX emp.PRIMARY

The syntax for dropping a non-primary index is:

DROP INDEX path_name.index_name

path_name is the name of the table from which the index is being dropped. The path name can be either the fully qualified path name or, if the table is specified with the Database attribute of the connection string, a simple table name.

index_name is the name that was given to the index when it was created. If the name contains blanks or special characters, or does not begin with a letter, surround it with the grave character ( ` ) (ASCII 96). Use the column name as the index name when dropping indexes from Paradox 3.5 or 3.0 tables.

For example:

DROP INDEX emp.last_name


Transactions in Paradox
Transactions

The Paradox driver supports transactions. A transaction is a series of database changes that is treated as a single unit. In applications that don't use transactions, the Paradox driver immediately executes Insert, Update, and Delete statements on the database tables and the changes are automatically committed when the SQL statement is executed. There is no way to undo such changes. In applications that use transactions, inserts, updates, and deletes are held until a Commit or Rollback is specified. A Commit saves the changes to the database file; a Rollback discards the changes.

Transactions affect the removal of record locking. All locks are removed when SQLTransact is called with the Commit or Rollback option to end the active transaction.


Isolation and Lock Levels Supported by Paradox
Isolation and Lock Levels Supported

Paradox supports isolation levels 1 (read committed) and 3 (serializable). It supports record- and table-level locking.


Paradox ODBC Conformance Level
ODBC Conformance Level

The API functions supported are listed in “Supported ODBC Functions,” found in the General Help on DataDirect ODBC Drivers. In addition, the driver supports the following Level 2 functions:

SQLSetPos

SQLPrimaryKeys

When used with Paradox 5 or Paradox 7 tables, the Paradox driver supports the SQLForeignKeys function. The Paradox driver also supports backward and random fetching in SQLExtendedFetch and SQLFetchScroll. The Paradox driver supports the minimum SQL grammar.


Number of Connections and Statements Supported by Paradox
Number of Connections and Statements Supported

The Paradox database system supports multiple connections and multiple statements per connection.


Paradox ODBC Setup dialog box
ODBC Paradox Driver Setup Dialog Box

Use the ODBC Paradox Driver Setup dialog box to create new Paradox data sources or configure existing data sources.

Data Source Name: A string that identifies this Paradox data source configuration in the system information. Examples include "Accounting" or "Paradox5-Serv1."

Description: An optional long description of a data source name.  For example, "My Accounting Database" or "Paradox Files on Server number 1."

Database Directory: The directory in which the Paradox files are stored.  If a directory is not specified, the current working directory is used. You can also specify aliases that are defined in your IDAPI configuration file, if you have one. To do this, enclose the alias name in colons. For example, to use the alias MYDATA, specify ":MYDATA:"

Advanced Tab

Displays the Advanced tab, where you can configure optional data source settings, such as server name.

OK

Cancel

Apply


Advanced Options for Configuring Data Sources
Advanced Tab, ODBC Paradox Driver Setup Dialog Box

Use the Advanced tab on the ODBC Paradox Driver Setup dialog box to specify optional settings when you create new Paradox data sources or configure existing data sources.

Network Directory: The directory containing the PARADOX.NET file that corresponds to the database you have specified. If the Paradox database you are using is shared on a network, then every user who accesses it must set this value to point to the same PARADOX.NET file. If not set here, this value is determined by the NetDir setting in the Paradox section of the IDAPI configuration file. If you are not sure how to set this value, contact your network administrator.

File Open Cache: A numeric value to specify the maximum number of unused file opens to cache. For example, the value 4 specifies that when a user opens and closes four tables, the tables are not actually closed. The driver keeps them open so that if another query uses one of these tables, the driver does not have to perform another open, which is expensive. The advantage of file open caching is increased performance. The disadvantage is that a user who specifies file locking on open may get a locking conflict even though no one appears to have the file open. The default is 0, which means no file open caching.

Create Type: The Paradox table version desired for any Create Table statements that you execute. You can specify 3, 4, 5, 7 or leave the box blank and use the default, which is determined by the Level setting in the Paradox section of the IDAPI configuration file. The numeric values map to the major revision numbers of the Paradox family of products.

Note: If you select Create Type 7, the Paradox driver supports table names up to 128 characters long. For all other Create Type settings, the driver supports table names up to 8 characters long.

International Sort: A setting to indicate the order in which records are retrieved when you issue a Select statement with an Order By clause. Clear this box to use ASCII sort order (the default setting). This order sorts items alphabetically with uppercase letters preceding lowercase letters. For example, “A, b, C” would be sorted as “A, C, b.”

Select this box to use international sort order as defined by your operating system. This order is always alphabetic, regardless of case; the letters from the previous example would be sorted as “A, b, C.” See your operating system documentation concerning the sorting of accented characters.

Use Long Qualifiers: Specifies whether the driver uses long path names as table qualifiers. If the Use Long Qualifiers check box is selected, path names can be up to 255 characters. The default is unselected (path names can be up to 128 characters).

Application Using Threads: A setting that ensures that the driver works with multi-threaded applications. You can clear this check box when using the driver with single-threaded applications. Turning off this setting avoids additional processing required for ODBC thread safety standards.

Translate Button

Displays the Select Translator dialog box, where you can translate your data from one character set to another. Choose the INTERSOLV OEM ANSI translator to translate your data from the IBM PC character set to the ANSI character set.

OK

Cancel

Apply


Entering Paradox Passwords

Paradox supports two types of passwords: master and auxiliary.  The Paradox driver supports master passwords only and can manage up to 50 passwords.

Paradox tables may be encrypted to provide limited access to users who do not know the password. The driver maintains a list of passwords for each connection. The driver can access only encrypted tables for which a password appears in this list. You can supply a password in three ways: by typing it in the Password dialog box (which appears when the driver does not have the password to open an encrypted table), by including it in a connection string (with the Passwords attribute), or by using the Add Password statement.

Entering Passwords with a Dialog Box

The password dialog box appears when the driver does not have the password to open a encrypted table. Entering the password in the dialog box will enable the driver to access that table for the rest of that connection.

Entering Passwords During the Connection

You may enter passwords that may be needed during a connection as a connection option. Use connection attribute "Passwords" to enter a comma-separated list of password names.

Entering Passwords with the Add Password Statement

You may enter passwords by executing the Add Password statement. For further help with Add Password, consult the INTERSOLV DataDirect Connect ODBC Reference or double-click the Driver help icon.


Apply Button

Writes the settings you have specified to the system information. These settings remain in effect until you change them in this dialog box. Clicking Cancel does not affect settings that have been applied.


OK Button

Writes the settings you have specified to the system information and closes the dialog box.


Cancel Button

Closes the dialog box without saving settings that have not been applied.