Sergei Turin
2004-09-15 08:30:26 UTC
Dear all,
have anybody experienced the problem using Informix SDK 2.7 ? I'm
trying to attach Informix table to MS Access database with no success
in case of table with DECIMAL datatype. MS Access refuses to link the
table saying "Invalid scale for DECIMAL data type". Other SDK's and
tables work fine.
The problem is mentioned in MS KB with recommendation to upgrade to
latest MDAC, MS Jet and Informix SDK.
Unfortunately I cannot use SDK 2.8x due to problem with logon at
runtime.
I need ODBC driver to ask for password during connection to linked
tables. 2.8x stores passwords in ODBC DSN. In case of no password in
DSN, logon fails with "ODBC call failed" message.
If somebody knows how to restore old behaviour of SDK, it would be
great too.
Software versions and environment settings follow.
Thanks in advance and regards,
Sergei Turin
*******************************************************************************
Server
HP-UX 11.01
Informix IDS 7.31UC6
Client
Windows XP SP1
MS Access 2000 / 2003 SR1
Informix SDK 2.70TC1
Latest MDAC 2.7 SP1 and MS Jet 4.0 SP7
IFX_USE_PREC_16=1
Table schema
Columns types are : integer, decimal(10), varchar(40,0), char(1),
smallint,
float, datetime year to second
Snippet from MS KB
</START>
ACC2000: "Error 3701: 'Invalid Scale for Decimal Datatype'" Error
Message When You Try to Link an Informix Table to an Access Database
This article was previously published under Q319485
</STOP>
Snippet from I-SDK 2.70 ESQL/C release notes addendum
</START>
Decimal precision for FLOAT and SMALLFLOAT conversions to DECIMAL data
type has been increased from 8 (SMALLFLOAT) and 16 (FLOAT) to 9 and
17, respectively. You might experience differences in decimal
precision after FLOAT/SMALLFLOAT to DECIMAL conversions. The functions
deccvflt() (SMALLFLOAT to DECIMAL conversion) and deccvdbl() (FLOAT to
DECIMAL conversion), which have converted float numbers to decimal
numbers with 8 digit and 16 digit precision, now have 9 digit and 17
digit precision.
For more information on the impact and scope of this feature, refer to
the Release Notes file for this release of ESQL/C. The following
section describes the IFX_USE_PREC_16 environment variable, which
provides backward compatibility.
1. IFX_USE_PREC_16 Environment Variable
A new environment variable IFX_USE_PREC_16 can be used to revert the
precision to 8/16 for all SMALLFLOAT/FLOAT to DECIMAL conversions by a
client ESQL/C program. Note that this environment variable affects the
client only and is not sent to the server.
When IFX_USE_PREC_16 is set to 1, a 9/17 client product will only use
8/16 precision to perform all SMALLFLOAT/FLOAT to DECIMAL conversions.
</STOP>
have anybody experienced the problem using Informix SDK 2.7 ? I'm
trying to attach Informix table to MS Access database with no success
in case of table with DECIMAL datatype. MS Access refuses to link the
table saying "Invalid scale for DECIMAL data type". Other SDK's and
tables work fine.
The problem is mentioned in MS KB with recommendation to upgrade to
latest MDAC, MS Jet and Informix SDK.
Unfortunately I cannot use SDK 2.8x due to problem with logon at
runtime.
I need ODBC driver to ask for password during connection to linked
tables. 2.8x stores passwords in ODBC DSN. In case of no password in
DSN, logon fails with "ODBC call failed" message.
If somebody knows how to restore old behaviour of SDK, it would be
great too.
Software versions and environment settings follow.
Thanks in advance and regards,
Sergei Turin
*******************************************************************************
Server
HP-UX 11.01
Informix IDS 7.31UC6
Client
Windows XP SP1
MS Access 2000 / 2003 SR1
Informix SDK 2.70TC1
Latest MDAC 2.7 SP1 and MS Jet 4.0 SP7
IFX_USE_PREC_16=1
Table schema
Columns types are : integer, decimal(10), varchar(40,0), char(1),
smallint,
float, datetime year to second
Snippet from MS KB
</START>
ACC2000: "Error 3701: 'Invalid Scale for Decimal Datatype'" Error
Message When You Try to Link an Informix Table to an Access Database
This article was previously published under Q319485
</STOP>
Snippet from I-SDK 2.70 ESQL/C release notes addendum
</START>
Decimal precision for FLOAT and SMALLFLOAT conversions to DECIMAL data
type has been increased from 8 (SMALLFLOAT) and 16 (FLOAT) to 9 and
17, respectively. You might experience differences in decimal
precision after FLOAT/SMALLFLOAT to DECIMAL conversions. The functions
deccvflt() (SMALLFLOAT to DECIMAL conversion) and deccvdbl() (FLOAT to
DECIMAL conversion), which have converted float numbers to decimal
numbers with 8 digit and 16 digit precision, now have 9 digit and 17
digit precision.
For more information on the impact and scope of this feature, refer to
the Release Notes file for this release of ESQL/C. The following
section describes the IFX_USE_PREC_16 environment variable, which
provides backward compatibility.
1. IFX_USE_PREC_16 Environment Variable
A new environment variable IFX_USE_PREC_16 can be used to revert the
precision to 8/16 for all SMALLFLOAT/FLOAT to DECIMAL conversions by a
client ESQL/C program. Note that this environment variable affects the
client only and is not sent to the server.
When IFX_USE_PREC_16 is set to 1, a 9/17 client product will only use
8/16 precision to perform all SMALLFLOAT/FLOAT to DECIMAL conversions.
</STOP>