• ベストアンサー

トランザクション処理について教えてください

お世話になります まず、トランザクション処理の定義から 「関連する複数の処理を一つの処理単位としてまとめたもの。」 例えば 金融機関での入出金処理、入金処理は成功で、出金処理は失敗 となると、まずいことになります。それで、 この、トランザクション処理は 「すべて成功」か「すべて失敗」のいずれかであること が保証されることらしいのですが、 さて、これを実現する方法を教えてください。 ACCESSのVBを使っての話で、エクセルファイルの作成や更新も あります。 また、どういった所を調べればいいかのアドバイスだけでもありがたいです 何か Begin Transaction ~ End Transaction のような方法を取ると聞いたことがあるのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • Nii
  • ベストアンサー率48% (79/162)
回答No.1

Accessなどでは、クエリ等の実行結果が即座にテーブルに反映されますので、一連の処理が途中で失敗に終わったときに、各テーブル間で不整合が起きない様に全ての処理が正常終了した時に、結果を反映(コミット)さし、途中でエラーが発生した時は、処理を中止(ロールバック)し、これまでの更新をなかった事にするのがトランザクションになると思います。 トランザクション開始(BeginTrans)  ↓ 入金処理 → 失敗 ロールバックを実施(CommitTrans)  ↓ 成功 出金処理 → 失敗 ロールバックを実施(CommitTrans)  ↓ 成功 コミットを実行(RollbackTrans) Excelなどでは、途中でエラーが発生しても、保存をしていなければ、結果は反映されていないので、トランザクションの概念は無いのではないでしょうか。 ファイルオープン  ↓ 入金処理 → 失敗 ファイルが保存されていないので元ファイルは変更無し  ↓ 成功 出金処理 → 失敗 ファイルが保存されていないので元ファイルは変更無し  ↓ 成功 ファイル保存

maaaa
質問者

お礼

回答ありがとうございました 図解で、とてもわかりやすかったです ありがとうございました

その他の回答 (1)

  • nackfive
  • ベストアンサー率32% (21/64)
回答No.2

VBAですと Set wp=dbEngine(0).WorkSpaces(0)(カレントの場合) wp.BeginTrans 処理 wp.CommitTrans で 出来ます 上記のキーワードでHELPを見るなり 検索すれば わかると思いますよ

maaaa
質問者

お礼

回答ありがとうございました

関連するQ&A