この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
7.6.1 製品管理用のフォーム
●フォームがロードされたときの処理
フォームがロードされた段階で,いままで説明した3つの処理を実行するように実装したものが,List 7-91である。
List 7-91は,次の3つの処理をする。
- 権限の調査
-
8〜46行目において,ユーザーが属するロールを調べ,AllAdminロール,Productsロール,ProductsAdminロールのいずれかに属さなければ,[編集]ボタン(BTN_EDITボタン)を[詳細]という名前に変更し,さらに[新規]ボタン(BTN_NEW),[削除]ボタン(BTN_DELETE),[入庫施行]ボタン(BTN_DUE)の3つを不可視とする。そして,AllAdminロールまたはProductsAdminロールのいずれかに属さなければ,[復帰]ボタン(BTN_UNDELETEボタン)と[入庫施行取消]ボタン(BTN_CANCELDUEボタン)も不可視とする。
- データグリッドコントロールの内容の更新
-
48〜58行目は,DGrid_Stockデータグリッドの内容を更新し,入出庫情報を表示するための処理である。58行目にあるRefreshDataプロシージャ(List 7-88)の呼び出しで,Business.ProductコンポーネントのGetStoragesメソッドを呼び出して得た入出庫情報を含むADODB.RecordsetオブジェクトとDGrid_Stockデータグリッドとが結び付くことになる。そして,そのまえに52〜56行目において,g_FilterFlag,g_startDate,g_endDate,g_startDueDate,g_endDueDateという各変数を初期化する処理をしている。
- 検索用コンボボックスに列見出しを格納
- 60〜61行目の処理で,List 7-90に示したSetFieldListプロシージャを呼び出し,DGrid_Stockデータグリッドに表示されている列見出しをCOMBO_SEARCHFIELDコンボボックスに格納している。
| お詫びと訂正 |
List 6-88に示したDataObj.StockコンポーネントのGetRecordsメソッドの実装に間違いが発覚した。DataObj.StockコンポーネントのGetRecordsメソッドは,List 6-89のBusiness.ProductコンポーネントのGetStoragesメソッドから呼び出されて使われるもので,このままだとBusiness.ProductコンポーネントのGetStoragesメソッドは正しく動作しない。 訂正したDataObj.StockコンポーネントのGetRecordsメソッドをList 7-92に示す。 誤っていた箇所は,48行目と52行目にある条件設定文である。48行目と52行目では,Nullかどうかを判定しているわけだが,このとき“=Null”や“<>Null”といったように算術用の演算子である“=”や“<>”を使ってNullと比較してはならない。Nullと比較する場合には,必ずList 7-92に示すように,“Is Null”(Nullであれば真,そうでなければ偽)か,“Is Not Null”(Nullであれば偽,そうでなければ真)のいずれかの特別な書式を使わねばならない。ここにお詫びして訂正させていただく。 |
| 81/134 |
