Microsoft KB Archive/103255

= ACC: Factors When Opening Attached ODBC Tables in MS Access =

Article ID: 103255

Article Last Modified on 5/6/2003

-

APPLIES TO


 * Microsoft Access 1.0 Standard Edition
 * Microsoft Access 1.1 Standard Edition
 * Microsoft Access 2.0 Standard Edition

-



This article was previously published under Q103255



SUMMARY
Advanced: Requires expert coding, interoperability, and multiuser skills.

This articles describes the factors that determine whether Microsoft Access will open an attached ODBC table in read-only mode or in read/write mode.



MORE INFORMATION
The following are three factors that can cause Microsoft Access to open an attached ODBC table in read-only mode:

 When the attached table does not have a unique index in the data source.

Microsoft Access is built on a keyset-driven cursor model, in which data is retrieved and updated based on key (or unique index) fields. If the key does not exist in the back-end table, Microsoft Access opens the table in read-only mode and the user is not able to modify the data. If the ODBC data source is set to read-only by either the DBMS security system or the network security system.

Microsoft Access determines this status by calling the ODBC application programming interface (API) SQLGetInfo with fInfoType=SQL_DATA_SOURCE_READ_ONLY. If *rgbInfoValue=TRUE, then the data source is read-only; as a result, the attached table is opened in read-only mode. If cursors are treated by the ODBC driver in a certain way. When a transaction is committed or rolled back, the ODBC driver can:

 Preserve the cursor. Close the cursor. Close and delete the cursor.</ol>

A cursor is a construct that is defined to point to a record (or set of records) in the table. The data is then manipulated by referencing the cursor.

If the driver exhibits behavior 3, Microsoft Access opens the table in read-only mode. To determines this, Microsoft Access first calls the ODBC API SQLGetInfo with fOption=SQL_TXN_CAPABLE. If

*rgbInfoValue=TRUE,

Microsoft Access calls SQLGetInfo with

fInfoType=SQL_CURSOR_COMMIT_BEHAVIOR

followed by

fInfoType=SQL_CURSOR_ROLLBACK_BEHAVIOR.

If either of these values is 0, the ODBC driver closes and deletes the cursors on committals or rollbacks.</li></ul>

Keywords: kbinfo kbusage KB103255

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.