none
Access 実行時エラー '3027' データベースまたはオブジェクトは読み取り専用なので、更新できません。 RRS feed

  • 質問

  • Aceess2016処理中に突然リンクテーブルが「実行時エラー '3027' データベースまたはオブジェクトは読み取り専用なので、更新できません。」の
    エラーになり困ってしまっています。
    DAOを利用してテーブルに約7000件のレコードAddnewで書き込んでいるですが途中で上記エラーになります。
    6000件書き込んでエラーになる場合や1000件書き込んでエラーになる場合など特定のレコードが原因ではないようです。
    リンクテーブル全てが更新できないようです。リンク先は同じAccessファイルです。ちなみにスタンドアロン仕様でネットワーク利用もしていません。再起動などしても現象はかわりません。
    ちなみに対象のテーブルをローカルにもってくると処理は正常終了します。


    どうぞ宜しくお願いします。



    • 編集済み odahiro3 2018年5月3日 9:46
    2018年5月3日 9:32

すべての返信

  • 原因はわかりません。仕方がないので対症療法で対応しています。

    レコードセットを一度閉じて再開すると動くようなので。

    でも保証はありません。

    on error goto error_work

    .........

    Exit Sub

    error_work:
      If Err.Number = 3027 Then
        rst.Close
        Set rst = db.OpenRecordset("Table_name")
        Resume
      Else
        MsgBox "error:" & Err.Number
      End If
    E
    nd Sub

    2019年3月8日 1:07
  • 似たような現象として、Access2016のいつのバージョンからか最初からかは忘れましたが、docmd.execute SQL で大量にinsert文を発行した際に、同じようなエラーが不規則に出るようになりました。

    原因としては、ldbファイルが高速でパカパカできたりなくなったりを繰り返すような処理で発生していました。

    対策として、更新するテーブルとは関係のないテーブルのレコードセットを作成してldbファイルが常時発生するようにしておいてexecute文を流すことで対処しました。対処から1年以上経ってますが、今の所問題なく動いているようです。

    今回の現象はAddnewなので違うかもしれませんが、ご参考までに。

    一応フィードバックHubには報告をしてますが、修正される気配は一向にありません。

    • 編集済み tama_ms 2019年4月5日 2:43
    2019年4月5日 2:38