この特集のトップページへ
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_FilterFlagg_startDateg_endDateg_startDueDateg_endDueDateという各変数を初期化する処理をしている。

 
検索用コンボボックスに列見出しを格納
  60〜61行目の処理で,List 7-90に示したSetFieldListプロシージャを呼び出し,DGrid_Stockデータグリッドに表示されている列見出しをCOMBO_SEARCHFIELDコンボボックスに格納している。
お詫びと訂正

 List 6-88に示したDataObj.StockコンポーネントのGetRecordsメソッドの実装に間違いが発覚した。DataObj.StockコンポーネントのGetRecordsメソッドは,List 6-89Business.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であれば偽,そうでなければ真)のいずれかの特別な書式を使わねばならない。ここにお詫びして訂正させていただく。

Prev 81/134 Next