|
分類:[VB.NET/VB2005 以降]
使用環境 VB.NET2008とACCESS2008をWinXP上で実行 VBからADO(ActiveX Data Objects 2.8 Library)を使って、ACCESSに接続している。 VB上でSQLを作成し、ADO.ExecuteでACCESSのDBに対してIOをしている。
今、客先で以下のような現象が発生していて対処に苦慮しています。 申し訳ありませんが、皆様の知恵をお借りしたくて書込みしました。
現象としては、プログラムから入力されたデータがDBに登録されていない。 時系列に説明いたしますと 1.9:00〜11:50 お客様が伝票を入力
2.11:50〜12:50 プログラムを終了させて、昼休み
3.12:50〜13:35 お客様が伝票を入力 (1)出荷日11/5のデータを登録 (2)再度、登録モードで出荷日11/5のデータを登録しようとして、「存在しています。」とエラー表示 (この時点では、(1)で登録されたデータは存在している。)
4.13:35 一度プログラムを終了させる。
5.13:36 再度、時系列の3(2)の操作を行ったところ、データが登録された。 (この時点で、3で入力されたデータ消えていると思われる。)
6.13:50 当方にお客様から連絡が来る。
調査の結果、12:50〜13:35に入力したデータが、消えていました。 (DBに存在していない) ログで確認したところ 1.登録のSQLは正しく発行されている。 Call CN.Execute(Sql)
2.コミットもされている。 CN.CommitTrans() (コミットの下にあるメッセージがログに表示されている)
3.登録されたデータに対して、削除した形跡はない。(delete文の発行はなし)
4.時系列の4で、プログラムを終了したことにより、メモリ上に保存されていた登録データが解放されたのでは、と考えています。
5.この現象は、常に起こる現象ではない。(午前中に登録したデータは正常に登録されている。)
いろいろ考えた結果、何かのタイミングでコミットを実行したが、正常にDBに登録されない事があるのでは、と考えています。 皆様の中に同じ経験された方や、対応方法を知っている方がいましたら、どう対処すれば良いかを教えてください。 よろしくお願いします。
|