#486 | 複数値フィールドの保存値を列挙するには? | VBA | |
テーブルのデザインにおいて、フィールドに対して下記のようなプロパティ設定を行うと、ひとつのフィールドに複数の値を保存することができます。
そしてそのテーブルあるいはそれをレコードソースとするフォームを開くと、下図のように、チェックボックス付きのドロップダウンリストが表示され、任意の項目にチェックを付けることよって、複数の項目を選択できるインタフェースとなります。 このフィールドに保存されている値をVBAで読み込むとき、一般的なフィールド名の指定だけでは値を取得することができません。”型が一致しません”エラーになってしまいます。1フィールド内の複数のデータもまたひとつのレコードセット、つまり複数のレコードとして内部的に保存されているためです。 複数値フィールドの保存値を列挙するには、次のようなプログラムを使います。ここでのポイントは、「特定フィールドのValueプロパティから新たなレコードセットを生成する」、「そのレコードセットでは、”Value”というフィールド名に各値が保存されている」という点です。 Dim dbs As Database Dim rst As Recordset Dim rstShiireID As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("商品") '仕入先IDフィールドのレコードセットを生成 Set rstShiireID = rst!仕入先ID.Value With rstShiireID '仕入先IDフィールド内の値を取り出すループ Do Until .EOF Debug.Print !Value .MoveNext Loop .Close End With rst.Close 実行例: ※上記の例では、仕入先IDフィールドにはルックアップで2列表示のコンボボックスが設定されています。1列目は「仕入先ID」という数値型フィールドで、「連結列」かつ列幅が「0cm」に設定されています。2列目が仕入先の会社名です。そのため、画面では仕入先名のみが表示されていますが、プログラム上のValueで取得される(イミディエイトウィンドウに出力される)のは仕入先IDの方の”数値”となります。 |
|||
|
Copyright © T'sWare All rights reserved |