見出し画像

宣言とトランザクション処理

実際に画面を作成する前に、もうひとつ基本的な流れを押さえておきたいと思います。今回のAccessシステムは1PC(スタンドアローン)ではなく複数のPCで運用する前提となっています。よって、複数のPCで同時に登録ボタンをクリックした時などの「同時制御」の説明を行いたいと思います。

同時制御の流れは以下のようになります。

画像1

例えば、売上伝票の修正を行ったとします。その中で、テーブルを削除したり追加したりする処理(処理A~D)が4つあったとします。もし何らかの原因で処理Bと処理Cの中間で障害が発生したとしたら、処理Aと処理Bだけが実行でき、処理Cと処理D(在庫テーブルの編集)が出来なくなったまま終わってしまいます。そうなると、在庫情報が狂ってきてしまいますね。ここの処理はなかなかAccessの参考書は記述していないので、ここで説明しておきたいと思います。

画像2

ちょっと難しい構図かと思いますが、基本的にはすべての入力画面などは上記の流れで作成していきます。AccessVBAは難しいとは思わずにある程度構文を覚えてしまえば、ルーチンで作成できます。

(A:On Error GoTo LBL_ERROR)…最初に記述しておきます。何かあったら(C)に移動しなさいという命令となります。

トランザクション開始(〇〇.BeginTrans)…処理A~処理Dの最初に宣言します。宣言すると、「他のPCはちょっと待ってね」という命令となり、自分のPC以外は制御が不可能となります。これで同時接続による危険を防ぐことができます。

トランザクション確定(〇〇.CommitTrans)…処理A~処理Dが順番に正常完了した後に処理が確定し実行します。無事に処理が終了すると(B)の処理に移り、プログラムが終了します。

トランザクションエラー(〇〇.RollBackTrans)…処理A~処理Dの間で何かエラーが発生した場合には(C:LBL_ERROR:)に行が移動します。その後、処理A~処理Dのすべてを取り消して(B)に移動し、プログラムが終了します。つまり、処理Cなどの途中でエラーが発生しても処理A~Dまでがすべて行われないままプログラムが終了するというのがトランザクション処理となります。

ここまでをふまえて、いよいよ次の章からは実際の画面を作成していきたいと思います。まずはこのページで基本を押さえてもらえれば光栄です。

御覧頂きましてありがとうございます。




この記事が気に入ったらサポートをしてみませんか?