
初めて質問します、よろしくお願いします。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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
アクセスVBA フォームのス...
-
ユーザーフォーム上にアイコン...
-
dbOpenTableとdbOpenDynaset
-
VBAにてメッセージボックスを最...
-
Accessでフォームから別フォー...
-
Accessのトグルボタンでサブフ...
-
AccessVBAのサブフォームの先頭行
-
VB.net(VB)で、フォームにExcel...
-
サブフォームの行ごとにコンボ...
-
Accessでサブフォームの合計を...
-
Access 無操作の場合、自動で閉...
-
ボタン押下でサブフォームのレ...
-
ToolStripStatusLabelを固定し...
-
WithEvents変数について
-
PDFフォームに本日の日付を自動...
-
C# 別なフォームへ値を渡す (...
-
サブフォームのイベント取得
-
Visual Studio 2005 C# フォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
アクセスVBA フォームのス...
-
サブフォームのイベント取得
-
VBAにてメッセージボックスを最...
-
サブフォームの行ごとにコンボ...
-
ExcelVBAでユーザーフォーム内...
-
サブフォームの新規レコードに...
-
フォーム上の全てのコントロー...
-
accessで2つ以上のフォームを起...
-
Accessのトグルボタンでサブフ...
-
ユーザーフォーム上にアイコン...
-
ExcelVBAでフォーム内でブック...
-
PDFフォームに本日の日付を自動...
-
リストボックスの選択解除
-
dbOpenTableとdbOpenDynaset
-
VBAでフォームのスクロールバー...
-
Access サブフォームでの複数行...
-
フォームで複数のチェックボッ...
おすすめ情報