この特集のトップページへ
Chapter 5:ビジネスロジック層の構築



COLUMN トランザクションのプロパティは管理者が変更できるが……

 Fig.5-52のトランザクションのプロパティは,デフォルトでクラスモジュールのMTSTransactionModeプロパティで設定したものが自動的に設定されるわけだが,あとから管理者が変更することもできる。しかし,ここで作成したCOMコンポーネントの場合,トランザクション処理を利用しているため,トランザクション設定を[未サポート]や[使用不可]に設定されてしまうと,正しく動作しなくなる。

 もしトランザクション設定が[未サポート]であるときにCOMオブジェクトを動作させないようにしたければ,トランザクション設定が[未サポート]であるときにエラーを返すような処理をメソッドに実装してしまえばよい。ObjectContextオブジェクトのIsInTransactionメソッドは,その時点でトランザクションの範囲内で実行されていなければFalseを,トランザクションの範囲内で実行されていればTrueを,それぞれ返すメソッドである。よって,このメソッドを利用し,次のような判定ルーチンを加えればよい。

Dim objContext As ObjectContext
Set objContext = GetObjectContext()
If Not objContext.IsInTransaction Then
    Err.Raise 1 + 512 + vbObjectError,, _
        "トランザクションがサポートされない環境では動作できません"
End If
prevpg.gif Chapter 5-2 7/16 nextpg.gif