
初めて質問します、よろしくお願いします。Access2007にて開発をしています。
リストボックスにて商品を選んだ際に隠しテキストボックスに´商品名1´,´商品名2´と入力し、クエリのwhere句に
IIf(IsNull([Forms]![フォーム1]![抽出商品名]),True,
[商品名] IN( [Forms]![フォーム1]![抽出商品名]))
と記載してデータ抽出を試みているのですが、常に値が0件で返ってきません。
このやり方ではIN演算子は使えないのでしょうか?
ご教唆のほど、よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
解決したでしょうか。
少し方法が違いますが、開いたクエリにフィルタ
をかける方法はどうでしょう。なお、クエリには
抽出条件を設定しないでおきます。
クエリの名前を「クエリ1」、リストボックスの名前を
「リスト0」とします。リストボックスのプロパティで
複数選択の項目を「標準」としておきます。
ここでは、「隠しテキストボックス」は使用せず、
変数に格納しています。同じことではありますが。
ボタンクリックでリストボックスで選択したアイテムを
抽出条件にして開いたクエリにフィルタをかける仕様になっています。
Private Sub コマンド0_Click()
Dim varitm As Variant
Dim strFilter As String
Dim ctl As Control
Dim strQuery As String
strFilter = ""
strQuery = "クエリ1"
Set ctl = Me!リスト0
DoCmd.OpenQuery strQuery, acNormal, acReadOnly
'リストボックスから選択した商品名を取得し、変数に格納
For Each varitm In ctl.ItemsSelected
strFilter = strFilter & "," & "'" & ctl.ItemData(varitm) & "'"
Next varitm
If strFilter <> "" Then
'文字列strの先頭にいらない「,」がくっついているので取り除く
strFilter = Right(strFilter, Len(strFilter) - 1)
'strFilterをフィルター用のIn句に整形
strFilter = "商品名 In(" & strFilter & ")"
'クエリにフィルタをかける
DoCmd.ApplyFilter strQuery, strFilter
End If
End Sub
なお、フィルタをかけたクエリを閉じるときに、
クエリの変更を保存するか問われるかもしれませんが、
特に保存の必要はないので、「いいえ」で閉じれば
いいかと。「はい」でも変わりはないかもしれませんが。
No.1
- 回答日時:
In演算子のカッコの中は、値そのもの(リテラル値)か式でなければなりません。
変数や今回のようなオブジェクト([Forms]![フォーム1]![抽出商品名])では機能しません。
フォームのフィルターではダメですかね?
hatena さんの
http://hatenachips.blog34.fc2.com/blog-entry-96. …
クエリでやろうとすると
IN( [Forms]![フォーム1]![抽出商品名])) が
In('商品名1','商品名2')
となるようにVBAでその都度クエリのSQL文を変更する必要があります。
ご回答頂きありがとうございます。やはりオブジェクトの値はダメなんですね。ご紹介頂いた内容で試してみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) エクセルで複数設定したハイパーリンク先を、どれを選んでも画面の左上に来るようにしたいのですが・・・ 3 2022/04/07 16:15
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
VBAにてメッセージボックスを最...
-
ExcelVBAでフォーム内でブック...
-
Googleフォームについて(至急)
-
Accessでフォームから別フォー...
-
サブフォームのイベント取得
-
C# Formの非アクティブ化をふせ...
-
VBのEXEファイルのサイズを小さ...
-
C# 別なフォームへ値を渡す (...
-
PDFフォーム内で日付計算したい...
-
クリップボードへのコピー
-
ExcelVBAでユーザーフォーム内...
-
サブフォームの新規レコードに...
-
サブフォームの行ごとにコンボ...
-
ユーザーフォーム上にアイコン...
-
ディスプレイ解像度より大きな...
-
【ACCESS2003】サブフォーム名...
-
アクセスVBA フォームのス...
-
F-Basic の DVD を探しています
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
C# 別なフォームへ値を渡す (...
-
VBAにてメッセージボックスを最...
-
PDFフォームに本日の日付を自動...
-
アクセスVBA フォームのス...
-
サブフォームの新規レコードに...
-
メッセージボックスの背景色
-
VBプログラムの終了
-
メインフォームからサブフォー...
-
Access 無操作の場合、自動で閉...
-
子フォームから親フォームのオ...
-
リストボックスの選択解除
-
accessで2つ以上のフォームを起...
-
フォーム上の全てのコントロー...
-
ユーザーフォーム上にアイコン...
-
ExcelVBAでユーザーフォーム内...
-
ASP.NETとC#でWebフォームを呼...
-
PDFフォーム内で日付計算したい...
おすすめ情報