BeginTrans、CommitTrans、RollbackTrans の各メソッド (ADO)
適用先: Access 2013、Office 2013
これらのトランザクション メソッドは、Connection オブジェクト内のトランザクション処理を次のように管理します。
BeginTrans は、新しいトランザクションを開始します。
CommitTrans は、すべての変更を保存して現在のトランザクションを終了します。 新しいトランザクションを開始する場合もあります。
RollbackTrans は、現在のトランザクションの間に行われたすべての変更をキャンセルし、トランザクションを終了します。 新しいトランザクションを開始する場合もあります。
構文
レベル = オブジェクト。BeginTrans()
オブジェクト。Begintrans
オブジェクト。Committrans
オブジェクト。RollbackTrans
戻り値
BeginTrans は、トランザクションの入れ子レベルを示す長整数型 (Long) の変数を返す関数として呼び出すことができます。
パラメーター
パラメーター | 説明 |
---|---|
object | Connection オブジェクトです。 |
Connection
Connection オブジェクトでこれらのメソッドを使用すると、ソース データに対する一連の変更を 1 つの単位として、保存または取り消しを行うことができます。 たとえば、口座間で振り込みをするには、ある口座からその金額を引き出し、同じ金額を別の口座に入金します。 どちらかの更新が失敗すると、口座の残高が合わなくなります。 開いている 1 つのトランザクション内でこうした変更を行う場合、すべての変更が完了するか、すべての変更が取り消されるかのいずれかになります。
注:
[!メモ] すべてのプロバイダーでトランザクションがサポートされているわけではありません。 プロバイダーがトランザクションをサポートしていることを示す、プロバイダー定義プロパティ Transaction DDL が Connection オブジェクトの Properties コレクションに表示されることを確認します。 プロバイダーがトランザクションをサポートしていない場合、これらのメソッドを呼び出すと、エラーが発生します。
いったん BeginTrans メソッドを呼び出すと、 CommitTrans メソッドまたは RollbackTrans メソッドを呼び出してトランザクションを終了するまで、変更がコミットされることはありません。
入れ子になったトランザクションをサポートするプロバイダーの場合、開いているトランザクション内で BeginTrans メソッドを呼び出すと、入れ子になった新しいトランザクションが開始されます。 戻り値は入れ子のレベルを示します。戻り値 "1" は、最上位レベルのトランザクションを開いた (つまり、トランザクションが別のトランザクション内で入れ子になっていない) ことを示します。"2" は、第 2 レベルのトランザクション (最上位のトランザクション内に入れ子になったトランザクション) を開いたことを示します。 CommitTrans または RollbackTrans の呼び出しは、最後に開かれたトランザクションにのみ影響します。上位レベルのトランザクションを解決するには、現在のトランザクションを閉じるかロールバックする必要があります。
CommitTrans メソッドを呼び出すと、その接続で開いているトランザクションで行われた変更が保存され、トランザクションが終了します。 RollbackTrans メソッドを呼び出すと、開いているトランザクション内で行われた変更がすべて元に戻され、トランザクションが終了します。 開いているトランザクションが存在しない状態でいずれかのメソッドを呼び出すと、エラーが発生します。
Connection オブジェクトの Attributes プロパティによっては、 CommitTrans メソッドまたは RollbackTrans メソッドを呼び出すと、新しいトランザクションが自動的に開始する場合があります。 Attributes プロパティが adXactCommitRetaining に設定されている場合は、 CommitTrans メソッドを呼び出すと、プロバイダーが新しいトランザクションを自動的に開始します。 Attributes プロパティが adXactAbortRetaining に設定されている場合、 RollbackTrans メソッドが呼び出された後に、新規トランザクションが自動的に開始されます。
リモート データ サービス
BeginTrans メソッド、CommitTrans メソッド、および RollbackTrans メソッドは、クライアント側の Connection オブジェクトでは利用できません。