牛、豚、鶏、どれか一つ食べられなくなるとしたら?

既出でしたら、大変申し訳ありません。

選択クエリーの抽出条件をフォーム上テキストボックスに入力した
値で行いたいと思います。
対象の項目は商品コードであり、テキスト型です。
フォーム上のテキストボックスに、1111 と入力し、
クエリーの実行をしたところ、正常に抽出。
しかし、フォーム上のテキストボックスに、"1111" or "2222"と
複数の商品を抽出したいので入力した場合、結果が出ませんでした。
おそらく、"1111" or "2222"の記述に問題があるのだと思い、
何パタンか挑戦しましたが、結果バツ。

どなたかお分かりになる方いらっしゃいますか?
つたない文章で申し訳ありません。

A 回答 (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
    • good
    • 0

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句を含んだ条件句を作成し、対象のクエリの条件とする方法があります)
    • good
    • 0

ひとつのテキストボックスに


>"1111" or "2222"
と入力してこれを2つの条件であるとするには
VBAでそのようなプログラムを書いてやらなければなりません

初心のうちは2つテキストボックスを使うほうが簡単でしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す