この特集のトップページへ
>
Chapter 6:ビジネスロジックの設計
6.4.3 明細の処理
●明細の編集
最後に,明細の一覧を取得するためのメソッドを実装しよう。ある伝票に付随するすべての明細を返すには,明細情報テーブルのSLIPIDフィールドの値が特定の伝票番号である全レコードを返せばよい。このレコードセットは,ADODB.Recordsetオブジェクトとして返す。
しかし,明細情報テーブル(Table 6-16)を見るとわかるように,明細情報テーブル中に格納されているフィールドの値が製品番号しかないというのは,それを直接ユーザーに表示するときに好ましいとはいえない。そこで,Fig.6-80に示すように,明細情報テーブルと製品情報テーブルの2つのテーブルを組み合わせてSELECT文を実行し,製品番号だけでなく製品名も一緒に返すようにする。
Fig.6-80 製品番号だけでなく製品名も返す
具体的には,次のようなSELECT文を使う。
SELECT 明細情報.ID As ID, 明細情報.PRODUCTID As PRODUCTID, 製品情報.PRODUCTNAME As PRODUCTNAME, 明細情報.NUMBER As NUMBER, 明細情報.UNITPRICE As UNITPRICE, 明細情報.PRICE As PRICE, 明細情報.MEMO As MEMO, 明細情報.SLIPID As SLIPID, 明細情報.MADEUSER As MADEUSER, 明細情報.MADEDATE As MADEDATE, 明細情報.LASTUSER As LASTUSER, 明細情報.LASTDATE As LASTDATE, 明細情報.DELETEDFLAG As DELETEDFLAG FROM 明細情報, 製品情報 WHERE 明細情報.PRODUCTID = 製品情報.ID AND 明細情報.SLIPID = 取得したい伝票の伝票番号
上記のSELECT文を使用し,指定された伝票番号を持つ伝票に付随する明細情報を返すメソッドをDataObj.SlipDetailコンポーネントにGetRecordsという名前で実装する(List 6-130)。GetRecordsメソッドは,引数に伝票番号をとり,その伝票番号に結び付けられている全明細(削除ずみであるものも含む)を返す。
List 6-130で示したDataObj.SlipDetailコンポーネントのGetRecordsメソッドを利用し,プレゼンテーション層に伝票の明細を返すような処理を,Business.SlipコンポーネントにGetSlipDetailsという名前のメソッドとして実装する(List 6-131)。List 6-131のGetSlipDetailsメソッドは,基本的にDataObj.SlipDetailコンポーネントのGetRecordsメソッド(List 6-130)を呼び出すだけである。ただし,21〜25行目で,その時点における伝票の状態を取得し,List 6-113で示したChk_Viewプロシージャを呼び出すことにより,参照する権限があるかどうかを調べている。
Chapter 6 61/92 |