Microsoft KB Archive/103255

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Knowledge Base


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:

    1. Preserve the cursor.
    2. Close the cursor.
    3. Close and delete the cursor.

    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.


Keywords: kbinfo kbusage KB103255