この特集のトップページへ
Chapter 6:ビジネスロジックの設計



6.2.4 顧客一覧の取得
●配列データを返す4つの方法
 Fig.6-44のようにして全顧客を一覧にして返すということは,つまりメソッドからの戻り値はおのずと複数の顧客の情報が格納された配列として表現されるということになる。Visual BasicでCOMコンポーネントのメソッドを実装する場合,配列の値を返すには,主に次の4つの方法がある。 まずは,4つの方法の概要と特徴について述べる。

1)Variant型の配列として返す
 1つ目の方法は,Variant型の配列として返すことである。たとえば,Table 6-8に示す3列×2行の表形式のデータを返したいとする。

Table 6-8 表形式のデータ
ソフトバンクパブリッシング03-1234-567803-1234-5679
マイクロソフト03-2345-678903-2345-6790

 この場合,Variant型の配列として返すには,たとえばList 6-36のように実装する。

 List 6-36GetCustomersメソッドは,Array関数を使ってVariant型の配列を作成し,それをクライアントに返している(2〜4行目)。また,メソッドの戻り値では行数を示すようにした(5行目)。List 6-36では,固定した値をArray関数の引数に渡しているが,データベースから取得したデータを返す場合には,ADOコンポーネントを使ってデータベースのレコードからデータを取り出し,それをArray関数の引数として使うことになるだろう。


One Point!Long型の配列やString型の配列などを戻り値とした場合,そのメソッドはVBScriptから呼び出すことができない。配列を戻り値とするメソッドを実装する場合,VBScriptからの呼び出しもサポートするためには,Variant型の配列を返す

 クライアント(プレゼンテーション層)からList 6-36に示したGetCustomersメソッドを呼び出してデータを取得するときには,GetCustomersメソッドを呼び出して取得したVariant型の配列を,1つ1つ取り出すことになる(List 6-37)。

2)コレクション(Collection)として返す
 2つ目の方法は,コレクションとして返すことである。先の例と同じようにTable 6-8のようなデータを返すときには,List 6-38のように実装する。

 List 6-38に示したGetCustomers2メソッドでは,Newキーワードを使ってCollectionオブジェクトを実体化し,そのなかにAddメソッドでデータを加え,そのCollectionオブジェクトを戻り値としている。クライアントから呼び出すときには,取得したCollectionオブジェクトのItemプロパティを使ってデータを取得すればよい(List 6-39)。

 なお,CollectionオブジェクトのItem引数は,Array関数で作ったVariant型の配列とは違い,0からではなく1から始まるという点に注意してもらいたい(List 6-37の7行目とList 6-39の7行目のForループの違い)。

 また,List 6-38に示したCollectionオブジェクトによる実装例は効率が悪い。効率をよくするためには,1つ1つの列ごとにCollectionオブジェクトを使うのではなく,すべての列を1つのCollectionオブジェクトにまとめてしまったほうがよい。そのためには,Collectionクラスをカスタマイズして独自のクラスを作り,Addメソッド,Removeメソッド,Itemメソッドなどを拡張実装する。このような実装をすべて開発者が記述するのは大変だが,Visual Basic 6.0のコレクションビルダを使えば,比較的容易に実現できる。その具体的な方法については,「COLUMN コレクションビルダによるコレクションの実装」を参照してほしい。

prevpg.gif Chapter 6 29/92 nextpg.gif