- - PR -
皆様はADOでトランザクション中にエラーが発生した場合、どのようにロールバックされますでしょうか。。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-09-29 11:40
大変お世話になっております。
Sub test1() On Error GoTo hdl '---------------------------- 'エリア1 ADOとは関係ない処理 '---------------------------- (処理) '---------------------------- 'エリア2 ADO関係の処理 '---------------------------- Dim cn As ADODB.Connection Set cn = Application.CurrentProject.Connection cn.BeginTrans (処理) If (例:Formの背景が赤だったら) Then cn.RollbackTrans Exit Sub End If (処理) cn.CommitTrans Exit Sub hdl: If (トランザクション中だったら) Then cn.RollbackTrans Else (エラー処理) End If End Sub この(トランザクション中だったら)という部分をどのように表現すればよいでしょうか。 また、別の良い方法がありましたら合わせてご指摘、ご指導よろしくお願いいたします。 | ||||
|
投稿日時: 2005-09-29 11:43
こんにちは、じゃんぬ です。
トランザクション中だったら、という判断が不要な「制御構造」にします。 たとえ、GOTO ラベルがあろうと、構造化するのを重点的に置いてます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-09-29 11:55
確かにおっしゃる通りです。ありがとうございます。
例が悪いですが、(トランザクション中だったら)を取ることは可能なのかな〜と思いまして・・・ 大変失礼いたしました。 | ||||
|
投稿日時: 2005-09-29 12:02
@ ADO関係の処理部分を別subにして
そちらのエラーhdlにcn.RollbackTransを記述するというのはどうですか? A 初歩的ですがフラグを用意するというのはどうですか? (cn.BeginTrans時にonにするようなフラグ) | ||||
|
投稿日時: 2005-10-04 18:29
ありがとうございました!
| ||||
1
