Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/103255

From BetaArchive Wiki
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