Did this article resolve your question/issue?



DataDirect Connect for ODBC Driver Workarounds List

« Go Back


TitleDataDirect Connect for ODBC Driver Workarounds List
URL Name21526
Article Number000162475
EnvironmentProduct: Connect for ODBC drivers
Version: all supported versions
OS: all supported platforms
Database: all supported datbases
Application: all supported applications
Question/Problem Description
List of DataDirect Connect for ODBC Driver Workarounds
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
These workarounds may resolve or address a problem you are experiencing with the ODBC Driver. Identification of which workaround to use is dependant upon problem or behavior you are experiencing.

To register additional string values for workarounds:

Configure either system DSN, user DSN from the registry, or file DSN from the configuration file.

WorkArounds=1. If an ODBC driver reports that its SQL_CURSOR_COMMIT_BEHAVIOR or SQL_CURSOR_ROLLBACK_BEHAVIOR is 0, then return 1 instead and force statements to be prepared again by the driver.

WorkArounds=2. Some applications cannot handle database qualifiers. If this option is on, the driver reports that qualifiers are not supported.

WorkArounds=4. Some applications require two connections to a database system. Since some database systems support only one connection, the second connection attempt fails. Turning this option on causes our drivers to detect this condition and have the two ODBC connections share a single physical connection to the database system.

WorkArounds=8. If an ODBC driver cannot deduce the number of rows affected by an INSERT, UPDATE, or DELETE, it may return -1 in SQLRowCount. Some products cannot handle this. Turning this option on causes the driver to return 1 instead.

WorkArounds=16. For SQLStatistics, if an ODBC driver reports an INDEX_QUALIFIER that contains a period, some applications raise a "tablename is not a valid name" error. Turning this option on causes the driver to return no INDEX_QUALIFIER.

WorkArounds=32. Turning this option on enables users of flat-file drivers to abort a long-running query by pressing the ESC key.

WorkArounds=64. This option results in a column name of C where is the ordinal position in the result set. For example, "SELECT col1, col2+col3 FROM table1" produces the column names "col1" and C2. SQLColAttributes/SQL_COLUMN_NAME returns for result columns that are expressions. Use this option for applications that cannot handle column names.

WorkArounds=256. Forces SQLGetInfo/SQL_ACTIVE_CONNECTIONS to be returned as 1.

WorkArounds=513. To prevent ROWID results, this option forces the SQLSpecialColumns function to return a unique index as returned from SQLStatistics.

WorkArounds=2048. Microsoft Access performs more efficiently when the output connection string of SQLDriverConnect returns DATABASE= instead of DB= for some data sources. This option forces DATABASE= to be returned.

WorkArounds=65536. This option strips trailing zeros from decimal results, which prevents Microsoft Access from issuing an error when decimal columns containing trailing zeros are included in the unique index.

WorkArounds=131072. This option turns all occurrences of the double quote character ("") into the grave character (`). Some applications always quote identifiers with double quotes. Double quoting causes problems for data sources that do not return SQLGetInfo/SQL_IDENTIFIER_QUOTE_CHAR = .

WorkArounds=524288. The Microsoft Foundation Classes (MFC) bind all SQL_DECIMAL parameters with a fixed precision and scale, which causes truncation errors. Set this option to force the maximum precision/scalesettings.

WorkArounds=1048576. Some applications incorrectly specify a precision of 0 for character types when the value will be SQL_NULL_DATA. This option overrides the specified precision and sets the precision to 256.

WorkArounds=2097152. Some applications incorrectly specify a precision of -1 for character types. This option overrides the specified precision and sets the precision to 2000.

WorkArounds=4194304. For PowerBuilder users, this option converts all catalog function arguments to upper case unless they are quoted.

WorkArounds=536870912. This option allows for re-binding parameters after calling SQLExecute for prepared statements.

WorkArounds=1073741824. Microsoft Access assumes that ORDER BY columns do not have to be in the SELECT list. This workaround addresses that mistaken assumption for data sources such as Informix and OpenIngres.

WorkArounds2=2. Some applications incorrectly specify the ColumnSize/DecimalDigits when binding timestamp parameters. This workaround causes the driver to ignore the ColumnSize/DecimalDigits specified by the application and use the database defaults instead.

WorkArounds2=4. Microsoft Access uses the most recent native type mapping, as returned by SQLGetTypeInfo, for a given SQL type. This workaround reverses the order in which types are returned, so that Access will use the most appropriate native type.

WorkArounds2=8. This workaround causes base to add the bindoffset in the ARD to the pointers returned by SQLParamData. This is to work around a MSDASQL problem.

WorkArounds2=16. This workaround causes the drivers to ignore calls to SQLFreeStmt(RESET_PARAMS) and only return success without taking other action. It also causes parameter validation not to use the bind offset when validating the charoctetlength buffer. This is to work around a MSDASQL problem.

WorkArounds2=24. If you are using a Connect ODBC flat file driver, such as dBase, under MSDASQL, you must use this workaround for the driver to operate properly.

WorkArounds2=32. Microsoft Access requires "DSN" to be included in a connection string. This workaround appends "DSN=" to a connection string, if it is not already included.

WorkArounds2=128. Some applications will open extra connections if SQLGetInfo(SQL_ACTIVE_STATEMENTS) does not return 0. This workaround causes SQLGetInfo(SQL_ACTIVE_STATEMENTS) to return 0 to avoid the overhead of these extra connections.

WorkArounds2=256. Workaround for MSDASQL. Causes the drivers to return Buffer Size for Long Data on calls to SQLGetData with a buffer size of 0 on columns whose SQL type is SQL_LONGVARCHAR or SQL_LONGVARBINARY. Applications should always set this workaround when using MSDASQL and retrieving long data.

WorkArounds2=512. Workaround for Microsoft Query 2000. Causes the flat file drivers to return old literal prefixes and suffixes for date, time and timestamp data types. Query 2000 does not correctly handle the ODBC escapes that are currently returned as literal prefix and literal suffix.

WorkArounds2=1024. Workaround for ADO. ADO incorrectly interprets the SQLGetInfo (SQL_MULT_RESULT_SETS) to mean that the last result set returned from a stored procedure is the output parameters for the stored procedure. Setting this workaround causes the driver to return "N" for this SQLGetInfo call.

WorkArounds2=2048. Workaround for the ODBC cursor library. ODBC 3.x applications which use the ODBC cursor library will get errors on bindings for SQL_DATE, SQL_TIME, and SQL_TIMESTAMP columns. The cursor library incorrectly rebinds these columns with the ODBC 2.x type defines. The workaround causes the MERANT drivers to accept these 2.x sql types as valid.

WorkArounds2=4096. The ODBC Driver Manager incorrectly translates lengths of empty strings when a UNICODE enabled application uses a non-UNICODE driver. This workaround causes the MERANT drivers to internally adjust the length of empty strings. Use this workaround only if your application is UNICODE enabled..
References to Written Documentation:

Progress Solutions:

 Finding and setting WorkArounds - WorkArounds2 Connect for ODBC connection options
Last Modified Date11/20/2020 7:31 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.