2011/04/27

access2010 Webデータベース その32 RefreshRecord/レコードの更新

** Office365beta(プランP1) 環境 **
RefreshRecord/レコードの更新とRequery/再クエリマクロアクションの使いどころみたいな話
ブラウザ上のWebフォームが保持しているレコードセットは自動的に同期されることはないから必要に応じてRefreshRecordかRequeryしてやらないとならないということだろう。
RefreshRecordは、form.Refreshメソッドとほぼ同じなのだろうけど。

詳細フォームcmdSaveコマンドボタン

詳細フォームcmdExitコマンドボタン

帳票フォームcmdEditコマンドボタン

帳票フォームcmdNewRecordコマンドボタン
この状態で、詳細フォームでレコード編集後、RefreshRecordでカレントレコードの更新が確認できる。
詳細フォームでレコードを追加した場合、Requeryでレコードセットを取得しなければ新たに登録したレコードは表示されない。当然カレントレコードは先頭に移動する。
であるが、他ユーザがレコードを削除していた場合について検討した。
cmdEditRecordコマンドボタン押下時、TempVarを使用して明示
詳細フォームonLoadでcmdNewRecordかcmdEditRecordのいずれかが押されたかを判断し、TemVars!F_CategoriesDialogModeが"Edit"であるのに、IDフィールドがNullであれば対象レコードが存在しない、削除されたレコードであるとした。対象レコードが存在していればIDフィールドはNullにならないが、変更済みレコードということもある。この場合については別途検討しよう。編集フィールドが少なければcmdEditRecord押下時、TempVarsコレクションに一旦格納して詳細フォームonLoadで突き合わせるのもお手軽でいいかな。

0 件のコメント: