2016-07-24 31 views
1

Ich bin so fest auf VBA heute, ich könnte auch die Frage pop. Hoffentlich kann mir jemand helfen, dass ich verloren bin. Es geht um die folgende Zeile speziell:MS Access: Wie Filter mehrere Felder in einer gefilterten Suche (Textfeld)

strFilter = "orderstatus Like '*" & _. 

Orderstatus ist das Feld im Suchen in (Filterung nach unten). Es funktioniert gut, aber ich möchte auch andere Felder in dort!

strFilter = "orderstatus And ordersales Like '*" & _. 

Ich versuchte das ???? Ich habe versucht, viele Dinge, aber nichts funktioniert

Heres der vollständige Code:

Private Sub txtFilter_AfterUpdate() Dim strFilter As String 
If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then 
strFilter = "orderstatus Like '*" & _ 
Replace(Me.txtfilter.Value, "'", "''") & _ 
"*'" 
Me.Filter = strFilter 
Me.FilterOn = True 
Else 
Me.FilterOn = False 
End If 
End Sub 

Bitte helfen !!!! Ive für 4 Tage stecken schon: S

+0

Wo ist dein strFilter Set? Was ist das Problem - Syntaxfehler oder Filter funktioniert nicht? Es sieht so aus, als ob Sie nicht das Feld 'orderstatus' verwenden, in dem Ihr Beispiel angibt, dass Sie das Feld für den Bestellungsverkauf haben möchten. Aber wir sind nicht sicher, was Sie filtern möchten und was die Feldtypen sind. Wollten Sie Platzhalter auf beiden Feldern? – dbmitch

+0

Nun, es funktioniert gut. Es gibt mir die Ergebnisse zurück. Das Problem ist, dass ich ein einzelnes Feld in meiner Form suche. (Wie 1 colomn) In diesem Fall suche ich im Feld orderstatus, aber ich möchte noch einen hinzufügen: S Warum ist Access immer voller Probleme und Komplikationen? –

+0

Es gibt kein Problem mit Access. Es ist wie jede neue App - Sie müssen sich Zeit nehmen, um die Sprache zu lernen - oder in diesem Fall zwei Sprachen VBA und SQL. Woher bekommst du den Filterwert für das zweite Feld? Es klingt, als ob Sie mehrere Filtertextfelder und eine separate Schaltfläche "Filter anwenden" benötigen, die Ihre Filterfelder sammelt und verkettet. – dbmitch

Antwort

1

Sie Fügen Sie jedes Feld, das Sie separat filtern möchten, hinzu:

strFilter = "orderstatus LIKE '*xxx*' OR ordersales LIKE '*xxx*'" 

Verwenden Sie OR, wenn der eine oder andere den Filter enthalten soll string oder AND, wenn Sie möchten, dass beide es haben.

+0

Danke euch so sehr! Ich werde es versuchen :) –

2

Wenn Sie Platzhalter verwenden, auf beiden Feldern wollen, müssen Sie die Kriterien separat für beide Felder

Etwas Ähnliches anzuwenden:

Private Sub txtFilter_AfterUpdate() 

    Dim strFilter As String 
    Dim strWildcard As String 
    If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then 
     strWildcard = " Like '*" & Replace(Me.txtfilter.Value, "'", "''") & "*'" 
     strFilter = "orderstatus" & strWildcard & " And ordersales" & strWildcard 
     Me.Filter = strFilter 
     Me.FilterOn = True 
    Else 
     Me.FilterOn = False 
    End If 

End Sub 
+0

Danke euch so sehr! Ich versuche es :) –

+0

Nun, ich habe es versucht. Danke für die schnelle Antwort. Es scheint aber nicht zu funktionieren. Jetzt, wenn ich etwas in das Feld eingeben, drücken Sie die Eingabetaste, es tut einfach nichts wirklich. Oben auf der VBA-Seite habe ich auch dies: Option Datenbank vergleichen Option Explizite Das hat keine Auswirkungen, denke ich. –

+0

Was versuchen Sie mit dem Filter zu erreichen? Welchen Wert hat Ihr txtFilter - und sollte er auf BEIDE Felder angewendet werden? – dbmitch

0

Danke euch allen! dbmitch antwortet mit einem vollen Code, der korrekt ist, nur ich setze das AND auf OR, so dass es entweder Feld sucht. Vielen Dank!

Private Sub txtFilter_AfterUpdate()

Dim strFilter As String 
Dim strWildcard As String 
If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then 
    strWildcard = " Like '*" & Replace(Me.txtfilter.Value, "'", "''") & "*'" 
    strFilter = "orderstatus" & strWildcard & " And ordersales" & strWildcard 
    Me.Filter = strFilter 
    Me.FilterOn = True 
Else 
    Me.FilterOn = False 
End If 

End Sub