2016-07-15 14 views
0

Entschuldigung, wenn ich die falsche Terminologie habe. Ich versuche, ein Formular zu erstellen, bei dem der Benutzer das Feld aus einem Dropdown-Feld auswählt und anschließend den Suchtext in ein Textfeld eingibt. Das Formular sollte dann die Tabelle nach Datensätzen durchsuchen, die mit dem Text in dem in der Combobox angegebenen Feld übereinstimmen.Wert der Combobox als Feld übergeben

Aber was ich derzeit habe, funktioniert nicht. Ich weiß, wo der Fehler liegt, kann ihn aber nicht beheben.

Der aktuelle Code ist:

Private Sub btn_Search_Click() 

Dim strSearchTerm As String 
Dim strComboField As String 

strComboField = Me!cmb_src 

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _ 
    & "FROM Models " _ 
    & "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _ 
    & "ORDER BY Models.[Model Name]; " 

Me.sub_ModelList.Form.RecordSource = strSearchTerm 
Me.sub_ModelList.Form.Requery 

End Sub

Ich glaube, der Fehler in der Leitung ist

& "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _ 

Als Ersatz Fields (strComboField) mit einem Feldnamen [Modellname ] löst sich gut.

Jede Hilfe sehr geschätzt

Dank

+0

Versuch ' & "Where Fields" & strComboField & "LIKE '*" & Me.txtSearch & "*'" _'. Allerdings bin ich mir nicht sicher, es ist der einzige Fehler, den Sie haben, 'strComboField' bekommt einen Wert, dies ist nicht die Art, aus einer Combo-Box oder einer List-Box zu lesen –

+0

danke, das hat nicht funktioniert, aber als du sagst vielleicht wegen der Art, wie ich aus der Combobox falsch lese. Ich werde sehen, ob ich das lösen kann. Der Fehler, der mir gegeben hat, war (fehlende operator0 im Abfrageausdruck 'Felder Modellname LIKE' * joystick * ".) – TerrorPenguin

+0

Wenn Sie den Code mit F8 ausführen, liest' strComboField' den Wert korrekt aus der Benutzerformular-Combobox? es eine Combo-Box, List-Box oder ein Text? –

Antwort

0

Versuchen Sie, diese zu nutzen:

"Where [Model Name] LIKE '*" & Me.txtSearch & "*' " _ 

oder Bankabfrage mit WHERE wie folgt erstellen:

Where [Model Name] LIKE '* & Forms![frm_YourForm]![cmb_src] & *' 

und requery die Form Klicken Sie auf Suchen, der Rest des VBA-Codes ist nicht erforderlich

UPDATE: Sorry, verpasste den Punkt über die Auswahl des Feldes für die Suche. In diesem Fall, wo sollte

"Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' " 

Nach

Me.sub_ModelList.Form.RecordSource = strSearchTerm 

zusätzliche Requery nicht erforderlich sein, Ändern Recodsource erneut abfragt automatisch das Formular

+0

Ich bin nicht sicher, ob das ist, was ich will? Der [Model Name] sollte eingestellt werden durch den Benutzer über ein Kombinationsfeld zu [Modellname] ODER [Modellmarke] oder [Modellkategorie] Der Text, auf dem die Suche basiert, befindet sich in einem Textfeld namens txtsearch. Was ich versuche zu suchen, ist me.txtbox in dem Feld, das in dem Kombinationsfeld angegeben wird. – TerrorPenguin

+0

Ich entschuldige mich, verpasste den Punkt über die Auswahl des Feldes für die Suche, zweite Antwort war richtig –

+0

Keine Notwendigkeit, sich zu entschuldigen, danke für Ihre Hilfe – TerrorPenguin

2

Sollte es nicht sein:

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _ 
    & "FROM Models " _ 
    & "Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' " _ 
    & "ORDER BY Models.[Model Name]; " 
+0

Ja! Das funktioniert! Vielen Dank – TerrorPenguin

Verwandte Themen