2016-09-22 11 views
1

テーブル内の列に基づいて結果をフィルタリングし、クエリに基づいて結果を表示するアクセス2010検索ボックスを作成しました。複数の項目の参照テキストボックス

私が達成しようとしているのは、一度に1つのアイテムだけを検索ボックスに入れるのではなく、複数のアイテムを置くことです。 これは私が管理しているルータの全面的なものです。毎日、ステータスチェックが必要なルータのリストを取得しています。今は何をしているのですか。検索ボックスに各ルータ名をコピーして貼り付けています。 、場所と回路のrefしかし私は何をコピーし、1つのルータ名のすべてを貼り付けて、各ルータのための独立した結果を得るためにしたいと思います。

これは私がテキストボックスにフィルタに適用されているコードです:

Where Condition = [Circuit Reference] Like "*" & [Forms]![Query1]! [Text12] & "*" 

私はより多くのテキストボックスを追加し、それらにこのフィルタを適用するが、私はまだすべてのルータをコピー&ペーストする必要があります可能性があり独立した名前。

私はアクセスの専門家ではありませんので、この質問に答えるのは簡単すぎますが、私の問題で私を助けるウェブ上のものを見つけることはできません。

+0

なぜフィルタとしてコンボボックスを使用しないのですか?あなたが良い方法であるテーブル内のすべてのルータの参照を持っている場合。 – LostReality

+0

私は@LostRealityと思っていますが、20台までのルータ名をコピーして貼り付け、フォーム内でそれぞれ独立した結果を得ることができる必要があると思っています。 –

+0

「独立した」結果とはどういう意味ですか?それらはすべてワイルドカード検索である必要がありますか?どのような文字列を貼り付けますか?カンマ区切り、スペース、改行、タブ? – Brad

答えて

2

同じフィールドで複数のワイルドカード検索が必要なようです。これは、SQLクエリでORを使用して行うことができます。

Dim strSearchConditions As String 
Dim strTerms() As String 
Dim strSQL As String 
Dim i as Integer 

strSearchConditions = "" 

strTerms = Split(Me.txtSearch,",") 'Assuming you separate your search terms with a comma 

For i = 0 To UBound(strTerms) 
    If Not strTerms(i) = "" Then 
     strSearchConditions = " OR [Circuit Reference] Like '*" & strTerms(i) & "*'" 
    End If 
Next i 

If Not strSearchConditions = "" Then 
    strSQL = "Select * FROM tblMyTable WHERE 1=1 AND (" & strSearchConditions & ")" 
Else 
    MsgBox "No search terms!" 
End If 
+0

私は複数のワイルドカードが欲しいですが、条件が昏睡状態になることはありません、彼らはそれぞれ新しい行にあり、各ワイルドカード検索の結果がフォームに表示する必要があります。 私は異なるテキスト行にそれぞれ20種類のルータ名を入力したいと思っています。 私が "find"ボタンを押すと、フォームにrouter1の "ホスト名"、 "ステータス"、 "帯域幅"が表示されます。 それから私は同じ結果を必要としますが、router2のために....など。 私は今、一度に1つのアイテムのための結果です。 –

+2

これは上記のソリューションからの 'Split'機能以外は何も変わりません。コンマの代わりに、改行を探します。 "、"を上記のコードで 'Chr(13)&Chr(10)'、 'vbCrLf'または' vbNewLine'(引用符なし)に置き換えてみてください。 – SunKnight0

関連する問題