- ベストアンサー
ACCESS 選択クエリーの抽出条件について
既出でしたら、大変申し訳ありません。 選択クエリーの抽出条件をフォーム上テキストボックスに入力した 値で行いたいと思います。 対象の項目は商品コードであり、テキスト型です。 フォーム上のテキストボックスに、1111 と入力し、 クエリーの実行をしたところ、正常に抽出。 しかし、フォーム上のテキストボックスに、"1111" or "2222"と 複数の商品を抽出したいので入力した場合、結果が出ませんでした。 おそらく、"1111" or "2222"の記述に問題があるのだと思い、 何パタンか挑戦しましたが、結果バツ。 どなたかお分かりになる方いらっしゃいますか? つたない文章で申し訳ありません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
SELECT * FROM Goods WHERE Goods In (CutStr(Forms!フォーム1!条件,",",1) , CutStr(Forms!フォーム1!条件,",",2)); 条件: [111] 条件: [111,222] と、Where節に IN を使うと簡単かも知れません。 ただし、 CutStr関数の類は必要です。 Public Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & Text, Separator, , 0) CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function 一応、条件の個数が1個でも2個でもクエリはちゃんと抽出しているようです。 [クエリ1:選択クエリ] ID Goods 1 111 2 222
その他の回答 (2)
- gatt_mk
- ベストアンサー率29% (356/1220)
ACCESSの選択クエリーとは、リレーショナルデータベースのSQL文作成を簡易的なGUI画面で操作できる用にしたものです。 選択クエリーの画面表示を、デザインビューからSQLビューに変えてみてください。そうすると下記内容に似たSQL文が表示されると思います。 Select * From [テーブルもしくはクエリー名] Where [抽出条件フィールド] = [抽出対象のフォームテキストボックス名] フォームのテキストボックスに抽出条件に「1111」を入れるとWhere句の条件が Where [抽出条件フィールド] = "1111" となって対象が絞り込まれるわけです。 「"1111" or "2222"」と条件を設定するとこのWhere句が Where [抽出条件フィールド] = "'1111' or '2222'" となってしまい対象が絞り込めなくなります。 本来ならば、 Where [抽出条件フィールド] = "1111" or [抽出条件フィールド] ="2222" とならないと、複数の検索条件に合致したレコードは選択できません。 複数の検索条件を設定したい場合、一番簡単なのはフォームに複数のテキストボックスを用意し、クエリの条件として複数行にわたって対象のテキストフィールドの条件を設定しておくのが簡単でしょう。 例えば、クエリのデザインビューの1行目の条件フィールドにForm![フォーム名]![テキストボックス1]、2行目の条件フィールドにForm![フォーム名]![テキストボックス2]とすると複数の検索条件で絞り込み検索できると思います。 一つのフィールドに入れて複数の検索条件を機能させるには、かなりVBAの知識が必要になります。 (ヒントとしてはSplit関数などでスペース毎に分割して配列に格納し、その配列でWhere句を含んだ条件句を作成し、対象のクエリの条件とする方法があります)
- CHRONOS_0
- ベストアンサー率54% (457/838)
ひとつのテキストボックスに >"1111" or "2222" と入力してこれを2つの条件であるとするには VBAでそのようなプログラムを書いてやらなければなりません 初心のうちは2つテキストボックスを使うほうが簡単でしょう