2013/04/21

Office 365 Access アプリ -23- テーブル イベント サンプル2

テーブル イベントを利用したサンプル。

  [エラーの生成 / RaiseError] マクロ アクションを使用することで例外をスローし、レコードの操作をロールバックさせることも可能。Access アプリの各ビュー上での操作でも特段のマクロ記述なく実行されるので、過度なものは論外として普通に使っていくものだと思う。


  テーブル:在庫にアイテムの在庫数が記録されていて、テーブル:出庫に出庫数に関するレコードを挿入することで、在庫数を更新するのが主なシナリオ。レコードが挿入されるときの在庫数によって異なるアクションを実行するロジックも含める。



ざっくり解説的なものを。
  レコードの参照データ ブロックで在庫テーブル上のレコードを参照。この時該当レコードのロックを取得する。ロックはデータ マクロが終了するまで維持される。
  在庫に関するレコードから在庫数を参照して分岐処理。[エラーの生成] マクロ アクションでロールバックし、それぞれの内容でダイアログを表示する。



  出庫レコードを挿入しようとしたとき、在庫レコードが存在しない場合はあり得る。この場合、リレーションシップによる制約によりダイアログが表示される。レコードが挿入される前の出来事になるから、挿入時テーブル イベントに定義したマクロ アクションは実行されない。


  リレーションシップが存在しなければ、このダイアログはでない。この場合、[マクロの中止]マクロ アクションで終了すればよい。


   ただし、リレーションシシップがないことで使用できなくなる機能がある。

0 件のコメント: