Access 2007 で、コンボボックスを含むフォームから、DAO による INSERTができないことがある

現象
Microsoft Access 2007 や Access 2010で、コンボボックスが配置されたフォームを利用した際、DAO の Execute メソッドにてSQL Server のリンクテーブルへデータを追加することができない現象が発生する場合があります。
原因
この現象は、コンボボックスの値集合ソースに設定された SQL Server のリンクテーブルを用いたクエリが非同期で実行されることを起因として発生します。

コンボボックスの値集合ソースに設定された SQL Server へのクエリと、データを追加する SQL Server への INSERT のクエリが、同じトランザクション ID により実行されることがあります。

この場合、INSERT がコミット待ちの状態となり、フォームを閉じることで Rollback されます。
このため、データが追加されない現象が発生します。
回避策
コンボボックスにフォーカスが移動する前のコントロールの AfterUpdate イベント等に、DoEvents を追加します。
DoEvents が実行されることにより、コンボボックスのソースに指定されたクエリが実行されるタイミングが変わり、現象の発生を抑制することができます。

なお、マイクロソフトではこの問題に関しての修正予定はありません。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2703865 - 最終更新日: 09/29/2016 09:34:00 - リビジョン: 3.0

Microsoft Office Access 2007, Microsoft Access 2010

  • KB2703865
フィードバック