Access

Accessでデータ更新時「データの競合」エラーが発生したときに確認すること

Accesseエラー

競合していないのにデータ競合エラー現象

AccessでSQL ServerにODBC接続をしている状態でデータを更新しようとする際、以下のようなエラーが発生する場合があります。

このレコードは他のユーザーによって変更されています。

[レコードの保存]を選択すると、他のユーザーによる変更を無視し、自分が行った変更を反映します。

[クリップボードにコピー]を選択すると、変更したデータはクリップボードコピーされ、他のユーザによる変更が反映されます。

必要に応じて、クリップボードのデータを張り付け、自分が変更したデータに戻すこともできます。

このとき、本当に他のユーザーがロックしている場合も考えられますが、他の誰もアクセスしていない状況で競合エラーとなる場合があります。

データの型を確認しましょう

こんなときはまず、Access・SQLServerそれぞれのデータの型を確認しましょう。

  1. データリンクしたAccessのテーブルに「Yes/No型」の項目がないか?
  2. 「Yes/No型」の項目がある場合、SQL Serverの該当項目を確認する。

SQLServerの該当項目が「Bit型」で「Null値を許可する」設定となっていた場合は、

上記のようなAccessのエラーが発生します。

競合エラーの原因

「Bit型」の項目にAccessからODBC接続すると「Yes/No型」と変換されますが、Accessの「Yes/No型」はYesかNoしかありません。(NULLは設定できません)

このため、SQLServer側が「Null値を許可する」設定になっているとデータ不整合となることが原因かと思います。

それにしても、もう少し別のエラーメッセージは出せないものでしょうか・・・・。

対策

  1. SQLServer側のデータ項目を「Null値を許可する」「既定値=0」にします。
  2. Accessから再接続し、動作確認しましょう。

これでOKです。

SQLServerでテーブル設定を更新する際、「設定更新出来ない」旨のメッセージが表示される場合は、

「SQL Server Management Studio」の「ツール→オプション→デザイナー
「テーブルの再作成を必要とする変更を保存できないようにする」のチェックをOFFにしてください。

\逆引き辞書があると便利です/

created by Rinker
¥5,467
(2020/02/28 07:40:47時点 Amazon調べ-詳細)

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
中小企業にこそ必要なセキュリティ対策

日々巧妙化する悪意ある攻撃。狙われるのは大企業だけではありません。

セキュリティ対策が追い付いていない中小企業は犯罪者の恰好の餌食です。

情報セキュリティ部門がない、詳しい人がいない…。

そんな時は全部まとめて外部委託して安心を手に入れる方法がベストです!

\セキュリティ対策をまとめて全部NTT西日本にお任せ!/


資料請求はこちらから