2017-10-27 2 views
0

私はマルチ選択リストボックスをAccess 2010のフォームに使用しています。プライマリリストで選択されているものに基づいて別のリストボックスにレコードをフィルタリングしたいとします。理想的には、これをクエリ条件で実行したいと思います。VBA関数を使用してIN()SQL基準値を動的にビルドする方法はありますか?

VBA関数を使用してIN()ステートメントの値を簡単に使用する方法が見つかったことはありますか?

enter image description here

私はこの仕事を得ることができれば、私は非常に簡単にIDのリストを返すために、VBA関数を作成することができます。理想的には私はこのような何かを探しています。

他のアプローチ:

はい、私は、一時テーブルに選択された値をロードし、IN (SELECT MyColumn FROM tblTempValues)を使用してそれらをクエリが、私は本当にこのためだけに別のテーブルを追加する必要はありませんでした。

私は動的SQLを使用することもできますが、私は視覚的なクエリーデザイナーに保管して、単純さと保守性を向上させたいと考えています。

アレン・ブラウン氏は素晴らしい例がありますが、私は動的SQLを避けたいと思っています。

ありがとうございます!

+0

唯一の他の方法ですので、...あなたの質問は何ですか? [尋ねる]を読んだことがありますか? –

答えて

3

あなただけの項目がリストにあるかどうかをチェックする、あなたのWHERE条件にブール値を返すユーザー定義関数持つことができます。

サンプル:

VBA一部:

Public Function IsInList(myInt As Integer) As Boolean 
    Dim arrList As Variant 
    arrList = Array(1, 3, 4) 
    Dim i As Variant 
    For Each i In arrList 
     If myInt = i Then 
      IsInList = True 
      Exit Function 
     End If 
    Next i 
    IsInList = False 
End Function 

SQLパーツ

SELECT * 
FROM MyTable 
WHERE IsInList(ID) 

もちろん、必要に応じて、リストをグローバル変数に格納します。

それは句の中ほど効率的ではありませんが、あなたは一時テーブルでも、動的SQLを使用しない場合、これは私の知る限り

関連する問題