ActiveX Controls Guide (v11)

Transaction (ActiveX メソッド)

適用対象

VAccess

説明

Transaction 関数は、アプリケーション内での Pervasive PSQL トランザクション処理を制御します。Pervasive PSQL トランザクションを開始、終了、中止する場合に使用できます。

構文

object.Transaction iOperationCode 

Transaction メソッドの構文は次のような要素で構成されます。

要素
説明
object
必須。object プレースホルダーは、[適用対象]のオブジェクトを評価するオブジェクト式を表します。
メモ:このプレースホルダーは ActiveX アーキテクチャの要件にすぎず、object に接続されているファイルのトランザクションの適用範囲を制限するものではありません。トランザクションの開始メソッドと終了メソッドの間にネストされた、ファイルの挿入、更新、削除はすべてトランザクションに含まれます。
iOperationCode
必須。実行するトランザクション操作を指定します。

備考

トランザクション処理は Pervasive PSQL レコード マネージャーのデータ整合性機能です。その目的は、さまざまなテーブルに関連する一連の更新作業において、すべての更新を正常に実行するか、またはすべての更新をロール バックして、参照整合性を確実に保つことです。

Transaction メソッドでサポートされる操作は次のとおりです。ここに挙げられていないオペレーション コードに対してはステータス コード 1、無効なオペレーションが返されます。

コード
定数
説明
19
BTO_BeginTransaction
排他トランザクションを開始します。ほかのプロセスはこのトランザクションが終了しない限り、トランザクションに関与しているファイルにアクセスできません。
20
BTO_EndTransaction
トランザクションを終了し、そのトランザクションが開始してからファイルに対して行われた変更をコミットします。
21
BTO_AbortTransaction
Begin Transaction オペレーションの開始以後にファイルに対して行われた変更を破棄し、トランザクションを終了します。
1019
BTO_BeginTransaction + 1000
並行トランザクションを開始します(Pervasive.SQL バージョン 6 以降に対応 - それより前のバージョンでは、ステータス コード 1 を返します)。ほかのプロセスも、トランザクションによって影響を受けるファイルにアクセスできます。

定数宣言は、GLOBAL.BAS ファイル(16 ビット Visual Basic の場合)、GLOBAL.BAS ファイル(Visual Basic の場合)、GLOBAL.PAS ファイル(Delphi の場合)および GLOBAL.H ファイル(Visual C++ の場合)に含まれます。アプリケーションで Transaction 定数を使用するには、これらのファイルのうち 1 つ、開発環境に適したファイルをプロジェクトに含めます。

'並行トランザクションを開始する 
status% = Customers.Transaction(BTO_BeginTransaction + 
1000) 
 
If status% = 0 Then 
   'BeginTransaction は正常終了 
   '注文レコードを追加する 
   status% = status% + Orders.Insert 
 
   '請求レコードを追加する 
   status% = status% + Invoices.Insert 
 
   '顧客レコードを取得して修正する 
   Customers.IndexNumber = 1 '顧客 ID 
   Customers.FieldValue("custID") = _ 
      Invoices.FieldValue("custID") 
 
   status% = status% + Customers.GetEqual 
   Customers.FieldValue("lastInvoiceDate") = _ 
      Invoices.FieldValue("InvoiceDate") 
 
   balance = Customers.FieldValue("balance") + _ 
      Invoice.FieldValue("amount") 
 
   Customers.FieldValue("balance") = balance 
   status% = status% + Customers.Update 
End If	 
 
If status% = 0 Then 
   'すべての変更が正常に終了。トランザクションをコミットする。 
   Customers.Transaction(BTO_EndTransaction) 
Else 
   '1 つまたは複数の挿入に失敗。トランザクションを中止する。 
   Customers.Transaction(BTO_AbortTransaction) 
End If	 

StepPreviousExtended (ActiveX メソッド)

Unlock (ActiveX メソッド)