DOBON.NET DOBON.NETプログラミング掲示板過去ログ

トランザクション制御について

分類:[.NET]

環境:Windows2000SP4 VisualBasic.Net Access2000

Error_Check()
If bl_Error = True Then
Exit Sub
End If
Sql = "INSERT INTO・・・・・・・・・・・

'/*トランザクション開始*/
TR_Estimate = CN_Estimate.BeginTransaction()
'/*SQL文実行*/
CM_Estimate.Transaction = TR_Estimate
Try
CM_Estimate = CN_Estimate.CreateCommand
CM_Estimate.CommandText = Sql
CM_Estimate.ExecuteNonQuery()       ← この行でエラー
TR_Estimate.Commit()
Catch system As System.Exception
MessageBox.Show(system, ErrorTitle, MessageBoxButtons.OK,
MessageBoxIcon.Error)
TR_Estimate.Rollback()
Exit Sub
End Try

現在、VisualBasic.NetとAccess2000にてC/Sシステムを構築しています。
上記コーディングでトランザクション制御を行いたいのですが、
←の個所でエラーがでます。MSDNを確認したのですが、いまいち分かりませんでし
た。
どなたかご存知のかたご教授願います。
よろしくお願いします。

ちなみに、トランザクション制御を行わないように変更すると、
うまく動きます。データも登録されます。
ご教授願います。

エラーメッセージを記載していなかったので記載します。

'System.InvalidOperationException' のハンドルされていない例外が
system.data.dll で発生しました。

追加情報 : Execute は、コマンドに割り当てられた接続が保留状態であるローカル
のトランザクションにあるとき、トランザクション オブジェクトを持つコマンドが
必要です。コマンドのトランザクション プロパティがまで初期化されていません。

上記エラーが出力されました。
どなたかご存知の方、ご教授願います。
こんばんは、Takaさん。ピラルクです。

> '/*SQL文実行*/
> CM_Estimate.Transaction = TR_Estimate
> Try
> CM_Estimate = CN_Estimate.CreateCommand

が、

'/*SQL文実行*/
Try
CM_Estimate = CN_Estimate.CreateCommand
CM_Estimate.Transaction = TR_Estimate

と順がおかしいだけでは?
おはようございます。
解決しました。ありがとうございました。


■No846に返信(ピラルクさんの記事)
> こんばんは、Takaさん。ピラルクです。
>
>>'/*SQL文実行*/
>>CM_Estimate.Transaction = TR_Estimate
>>Try
>>CM_Estimate = CN_Estimate.CreateCommand
>
> が、
>
> '/*SQL文実行*/
> Try
> CM_Estimate = CN_Estimate.CreateCommand
> CM_Estimate.Transaction = TR_Estimate
>
> と順がおかしいだけでは?
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板