2011/05/26

access2010 Webデータベース その57 条件付き書式

** Office365beta(プランP1) 環境 ** 
条件付き書式を使用することができない。でも実装してみる。

Single FormのOnCurrentと対象コントロールのOnAfterUpdateで背景色などを変更していけばよいのだから、実装自体が難しいということではない。ちょっと面倒だなと思うこととブラウザでの実行時に制限というか仕様による手数が多少増えるかも程度。
コントロールの値を判断してコントロールのプロパティを設定するロジックを、必要なすべてのイベントで実行すれば何ら問題ない。仕様を変更するとき全部書き直せばよい。
なので、判断ロジックを集計フィールドに任せて実装してみた。
集計フィールドでコントロールのプロパティ変更に使う値を閾値から判定している。この形であれば集計フィールドの数式を変更すれば、WebフォームのUIマクロを変更することなく仕様を変更できる。
一番最初に開かれるフォームのイベントで背景色に使う色情報を一時変数に代入しておく。この値だけを変更すれば背景色に使う色を変更できる。
該当フォームOnLoadでコントロールの本来の背景色を取得。
OnCurrentで集計フィールドの値を参照し、その値から使用する色を判断してプロパティの設定
コントロールのOnAfterUpdateで更新された値からプロパティの設定としているのだけど、新規レコードでクライアント上での実行ではない場合、SaveRecordを実行してからコントロールのプロパティを設定している。
新規レコードであるとき、集計フィールドの値は取得できない。これはAccess Serivicesの仕様のはず。Access Servicesはステートフルってどっかの資料にもあった。
という感じで、条件付き書式っぽく動作する。
クエリや集計フィールドを使わない場合、Webマクロやデータマクロで計算させた値からコントロールのプロパティの設定をすることはできるのだけど、ちょっとだけ期待しない動作をする。
該当コントロールOnAfterUpdateでWebマクロ/データマクロを実行した場合、次に発生する最初のコントロールの移動がキャンセルされたような動きになる。
情報として知っていたことも実際に試してやっと理解できることもある。
条件付き書式とは言えないけど近いところまで。まったくの使えないコネタ

0 件のコメント: