2011/04/30

access2010 Webデータベース その35 レコードの保存 -1-

Webフォーム(ダイアログ)でRunMenuCommand/メニューコマンドの実行 レコードの保存をするとき、他ユーザによりレコードの編集や削除がされているかもしれない。システムのアラートでもよいのだけどエラー制御とかちょっと検討。
クライアントフォームとは違ってForm.Errorイベントがないから、レコード(SharePointアイテム)の操作はダイアログフォームで実行したほうがよいのだろうな。

該当するテーブルを参照するデータマクロを仕込んでおく。パラメータにIDとかPKを渡して、LookUpRecordデータブロックでレコードを参照し、SharePointアイテムのSharePointEditorとSharePointModifiedDateをデータマクロの戻り値にする。レコードが存在すればそれぞれ値が返り、レコードが存在しなければReturnVarはNullを返す。
ダイアログフォームは、OpenForm/フォームを開くマクロアクションのWhereCondition使ってPKで絞り込んであるから、フォーム読み込み時でPKのフィールドがNullであればレコードが存在しないということになる。
レコードを保存しようとした時、レコードが編集済みもしくは削除済みであった場合、マクロエラーが発生する。MacroError.Numberは2950なので仕分けしてメッセージを表示させる。
但し、データマクロはそれなりに重いのでテーブルに連結されたフォームで使用するのは、どうしてもという時だけだろう。
 続き

0 件のコメント: