2016-09-22 4 views
1

Ich habe ein Access 2010-Suchfeld erstellt, das Ergebnisse basierend auf einer Spalte in einer Tabelle filtert und dann die Ergebnisse basierend auf der Abfrage präsentiert.Textfeld für mehrere Elemente Suchen

was ich versuche zu erreichen, ist in der Lage, nicht nur ein Element auf einmal in das Suchfeld, sondern mehrere Elemente zu setzen. Dies ist für eine ganze Reihe von Routern, die ich verwalten und jeden Tag bekomme ich eine Liste von Routern, die Status überprüft werden müssen, so was ich jetzt mache, ist das Kopieren und Einfügen jedes Routernamens in das Suchfeld und es gibt mir den Status , location und circuit ref aber was ich tun möchte ich alle Router Namen auf einmal kopieren und einfügen und unabhängige Ergebnisse für jeden Router erhalten.

Dies ist der Code, den ich für den Filter in das Textfeld angewendet haben:

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

ich mehr Textfelder hinzufügen könnte und dies auf sie filtert, aber ich würde immer noch kopieren müssen und fügen Sie jeden Router Name unabhängig.

Ich bin kein Access-Guru so applies, wenn diese Frage zu leicht zu beantworten ist, aber ich kann nichts im Web finden, die mir mit meinem Problem hilft.

+0

Warum nicht eine Combobox als Filter verwenden? Wenn Sie alle Router-Referenzen in einer Tabelle haben, ist das ein guter Weg. – LostReality

+0

das nicht tun, denke ich @LostReality wie ich in der Lage sein, bis zu 20 Router Namen kopieren und einfügen und unabhängige Ergebnisse für jedes innerhalb des Formulars erhalten. –

+0

Was meinst du "unabhängige" Ergebnisse? Müssen sie alle Wildcard-Suchen sein? Welche Art von String möchten Sie einfügen? Komma getrennt, Leerzeichen, neue Zeile, Tabulator? – Brad

Antwort

2

Es klingt, als ob mehrere Platzhaltersuchen auf demselben Feld ausgeführt werden sollen. Sie können dies tun, indem Sie OR in Ihrer SQL-Abfrage verwenden.

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

Ich möchte mehrere Platzhalter, aber die Begriffe werden nicht Koma getrennt, sie sind jeweils in einer neuen Zeile und das Ergebnis jeder Platzhalter-Suche muss auf dem Formular angezeigt werden. , um die Dinge besser zu erklären: Ich möchte 20 verschiedene Router Namen jeweils auf einer anderen Textzeile eingeben. und wenn ich den "find" -Button drücke, möchte ich, dass das Formular den "Hostnamen", "Status" und "Bandbreite" von Router1 anzeigt. dann unten, dass ich die gleichen Ergebnisse aber für Router2 .... und so weiter ... was ich jetzt bekomme, ist nur das Ergebnis für ein Element zu einer Zeit. –

+2

Das ändert nichts außer der Split-Funktion aus der obigen Lösung. Suchen Sie statt eines Kommas nach einem Zeilenvorschub. Ersetzen Sie "," durch "Chr (13) & Chr (10)", "vbCrLf" oder "vbNewLine" (keine Anführungszeichen) im obigen Code. – SunKnight0

Verwandte Themen