ここから本文です

データベースにレコードを多重追記してしまって困っています。

loa********さん

2011/10/119:03:49

データベースにレコードを多重追記してしまって困っています。

業務でアクセス+VB.NETでアプリを作成しています。ある事象をトリガーにデータベースにレコードを追記する処理を書きました。データをネットワーク越しの(ローカルではない意味)データベースに書き込む際は、問題は発生しないのですが、テスト環境下をローカルで再現してレコードを追記処理を実行させますと、同一データを2レコード書き込んでしまいます。
テーブルにレコードを追記(追加クエリ)処理をさせる時に、立ち上がり微分的な処理をさせる為には、どの様にしたら良いか分からず困っています。

補足ありがとうございます。補足をしたいのですが、文字数制限の為ソースの殆どを削りました
objCommand.CommandText = "INSERT INTO TBL_RESULTS_PROS 略
objCommand.Connection = objconn
objCommand.ExecuteNonQuery()
これで伝わるでしょうか
ある事象とはフォーム上のボタンをクリックする又は、DIOでイベントを発生した時です。
ボタンをクリックでもDIOからのイベントでも症状は同じです。

閲覧数:
188
回答数:
2

違反報告

ベストアンサーに選ばれた回答

たっくんさん

2011/10/317:50:47

回答します。
livingintheblueshadowsさんのおっしゃるようにテーブルに主キーを設定すれば解決できる場合があります。
主キーを設定できない理由がある場合は、先読みして該当データがあったらINSERTは行わず、何もしないか新データでアップデート、なければINSERTという処理にすることです。
単純にSQLだけでやろうとせず(やろうとすれば出来なくはないでしょうが、SQりの記述がいりこむことで修正しにくくなり、且つ処理も遅くなる)、処理全体で考えてみては如何でしょう。
以上参考まで。

質問した人からのコメント

2011/10/5 21:11:02

テーブルの構造、SQL文を再度見直してみます。ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

編集あり2011/10/200:53:10

テーブルに主キーを設定するとか、重複不可のインデックスを設定するとかじゃダメ?
・「ある事象」というのがどういう事象なのか
・テーブルの構造はどういうものか
・レコード追加の処理はどういうソースコードになっているのか
というのを補足すると回答がつきやすいかも。

>ボタンをクリックでもDIOからのイベントでも症状は同じです。
一回ボタンをクリックすると、objCommand.ExecuteNonQuery() が一回だけ実行されて、同一データが2レコード書き込まれるということですか。それは厳しいですね・・・。
トレースして調べるくらいしかないかもしれないです。
http://msdn.microsoft.com/ja-jp/library/ms971550.aspx

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる