UpdateCommand同時実行違反について
- 題名: UpdateCommand同時実行違反について
- 著者: ERI
- 日時: 2011/01/31 18:03:14
- ID: 28087
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: UpdateCommand同時実行違反について
- 著者: 魔界の仮面弁士
- 日時: 2011/01/31 21:36:08
- ID: 28088
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: UpdateCommand同時実行違反について
- 著者: ERI
- 日時: 2011/02/04 11:34:02
- ID: 28102
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: UpdateCommand同時実行違反について
- 著者: ERI
- 日時: 2011/02/06 15:28:12
- ID: 28107
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: UpdateCommand同時実行違反について
- 著者: 魔界の仮面弁士
- 日時: 2011/02/06 18:46:26
- ID: 28110
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: UpdateCommand同時実行違反について
- 著者: ERI
- 日時: 2011/02/06 19:20:36
- ID: 28111
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: UpdateCommand同時実行違反について
- 著者: ERI
- 日時: 2011/02/06 19:21:01
- ID: 28112
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
失礼致します。
開発環境OS=XPProSP2
言語=VB.NET2003
です。
フォームfrmTestで使う関数FUNCTIONを想定します。
FUNCTIONを実行すると、ローカルにあるMicrosoftAccessのデータベース(MDB)にあるテーブル[売上明細]のフィールド[フラグ](int型)を、0から1に書き換えます。ここでは、コードを簡略化するために、レコードが1レコードだけ、確実に入っていると想定します。
テーブル[売上明細]のフィールド構成は以下の通りです。
売上明細
明細ID
商品コード
商品名
単価
数量
フラグ(int型)
以下、コード内容です。
---------------------------------------------------------------------
Imports System.Data.OleDb
Public Class frmTest
Inherits System.Windows.Forms.Form
Public Function FUNCTION
Dim strA As String
Dim cnL As OleDb.OleDbConnection
Dim daL As OleDb.OleDbDataAdapter
Dim dsL As New DataSet
Dim dtL As DataTable
Dim drL As DataRow()
Dim Olecb As OleDb.OleDbCommandBuilder
Try
strA = "SELECT * FROM [売上明細]"
cnL = New OleDb.OleDbConnection(データベース接続文字列)
cnL.Open()
daL = New OleDb.OleDbDataAdapter(strA, cnL)
daL.Fill(dsL, "売上明細")
dtL = dsL.Tables("売上明細")
drL = dtL.Select()
Olecb = New OleDb.OleDbCommandBuilder(daL)
drL(0).BeginEdit()
drL(0)("フラグ") = 1'ここで、変更。
drL(0).EndEdit()
daL.Update(dsL, "売上明細")
MsgBox("更新しました。")
Return True
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
End Class
------------------------------------------------------------------
上記のコードを実行すると、[売上明細]には確かに1レコード、入っているのですが、daL.Update(dsL, "売上明細")の行で、「同時実行違反:updateCommandによって0件処理されました」エラーが出てしまいます。cnL.Open()を外しても、drL(0).BeginEditとdrL(o).EndEditを外しても、結果は同じでした。
drL(0)("フラグ") = 1のコードをコメントアウトすると、エラーは起きずに、MsgBox("更新しました。")まで流れます。
どなたか原因がお分かりになられましたら、お忙しい中、誠に恐縮でございますが、ご指導くださいませ。
よろしくお願い致します。