Board index » delphi » MS-Access-Drivers (*.mdb) version 3.5 and 4.0

MS-Access-Drivers (*.mdb) version 3.5 and 4.0

One of our ODBC-SQL-Apps (Delphi 3) is based on the
Microsoft Access-Driver (*.mdb).
We have to different versions of these Access-Drivers,
which both can be installed to the ODBC of an PC :
Version 3.5... and version 4.0...

We have one Database, which was
created on a PC using Access-Drivers 3.5 and
unfortunately the application does not work with
this Database when the Access-Driver 4.0 is
installed to the ODBC of a PC.

My question: Is there some kind of convertion-Tool,
which can be used to convert a Database (created on
3.5 - Drivers) to a Database that works together with
4.0 - Drivers ?

Kind regards ...

 

Re:MS-Access-Drivers (*.mdb) version 3.5 and 4.0


Peter,

Here's a copy of a later update to Brian's info from:
http://community.borland.com/article/1,1410,19779,00.html

It now indicates that Borland may address this with a BDE update, though I
don't expect to see it quickly.

----------------------------

Question and Answer Database

     FAQ: FAQ4779B - Character fields from Access ODBC connection are
reported as being double their true size
Category: Database (ODBC)
Platform: All-32Bit
 Product: All-CBuilder,   C++Builder1.0,   C++Builder3.x,   C++Builder4.x,
Delphi2.x,   Delphi3.x,   Delphi4.x,   VdBase7.x,

Question:

How come when I use Microsoft's latest ODBC driver for Access the BDE
returns the field size for character fields as being double their actual
size?

Answer:

This problem occurs because the BDE calls SQLCOLUMNS and the looks at
BUFFER_LENGTH
to determine the size of a column. With this driver BUFFER_LENGTH is
returned as
double what the COLUMN_SIZE is.

Here is what Microsoft used to document what BUFFER_LENGTH should return:

The length in bytes of data transferred on an SQLGetData, SQLFetch, or
SQLFetchScroll operation if SQL_C_DEFAULT is specified. For numeric data,
this
size may be different than the size of the data stored on the data source.
This value is the same as the COLUMN_SIZE column for character or binary
data.

Here is what Microsoft nows documents what BUFFER_LENGTH should return:
The length in bytes of data transferred on an SQLGetData, SQLFetch, or
SQLFetchScroll operation if SQL_C_DEFAULT is specified. For numeric data,
this
size may be different than the size of the data stored on the data source.
This value might be different than COLUMN_SIZE column for character data.

Inprise has verified this problem to exist in versions 4.00.3711.08 and
4.00.4202.00 of the Access ODBC driver. Inprise has contacted Microsoft
and they have confirmed this new change in the ODBC specification. Inprise
is currently evaluting how to resolve this issue in a future release that
does not effect other ODBC drivers adversely.

Errors that may be causes by problem are "Record/Key Deleted" and "Size
Mismatch".

The workarounds to this problem are:
1. Use an older version of the ODBC driver.
2. Use the BDE Access Native driver.
3. Use ADO with Delphi 5.

7/28/99 10:46:47 AM

Article ID:19779   Publish Date: July 28, 1999  Last Modified: October 01,
1999

Other Threads