#711 | ユニオンクエリでコンボボックスの先頭に空の項目を付ける方法 | クエリ | |
HTMLの「SELECT」タグで作られたセレクトボックスとは異なり、Accessのコンボボックスでは、リストからの選択だけでなく直接キーインしてデータ入力できるのが特徴です。またその欄を空欄にしたいときには、入力されたデータをDeleteキーなどで削除すれば済みます。 一方、その先頭に空のリスト項目を設け、空欄にしたいときもリストから選択できるようにしたいといった場合、HTMLの「SELECT」タグであればその項目を単純に追加すれば済みますが、コンボボックスの場合、その多くはテーブルと連結することが多いので、そのテーブル自体に空のレコードを設けなければならず何かと不都合が生じます。 そのようなとき、テーブルには空のレコードを持たせることなく、ユニオンクエリを使ってそのようなリスト項目を付ける方法です。 ここでは下図のような「mtbl保管場所マスタ」テーブルのデータをコンボボックスのドロップダウンリストに表示させるものとします。
【補足】
ユニオンクエリにおいて先頭に空データを設定するのは下記のようなSQLでもできるように思えます。SELECT "" AS 保管場所コード, "" AS 保管場所名 UNION SELECT 保管場所コード, 保管場所名 FROM mtbl保管場所マスタ しかしこのSQL文だと最初のSELECTにFROM句がない、つまりテーブル(あるいはクエリ)が指定されていないため、『クエリの入力には、1つ以上のテーブルまたはクエリが必要です。』というエラーになってしまいます。 そのため、上記では最初のSELECT文にも「FROM mtbl保管場所マスタ」を付けるとともに、そのテーブルの全レコードが取り出されないよう「TOP 1」を付けています。 ※実際には「TOP 1」がなくても『UNION』であれば重複するレコードは除外されて想定通りの動きになりますが、『UNION ALL』とした場合はレコードの数だけ空のリストが表示されてしまいます。ここでもどちらでもよいように念のため「TOP 1」を付けています。 ※また状況によって必要であれば、上記SQL文の最後にORDER BYで並び順を設定することもあるかもしれません。 |
|||
|
Copyright © T'sWare All rights reserved |