Hallo Zusammen.
Ich beisse mir seit einiger Zeit an einem Problem die Zähne aus.
Umgebung:
Wir haben bei uns in der Firma eine Access-Datenbank deren Tabellen auf einem SQL-Server hinterlegt sind.
Wir nutzen ein Formular als Eingabehilfe für eine dieser Tabellen.
Diese Tabelle umfasst verschiedene Punkte wie „Kategorie“, „Verantwortlicher“ etc.
Nun ist der Wunsch aufgekommen, dieses Formular anhand dieser Felder mit einem Dropdown-Menü zu filtern. Ebenfalls nach mehreren Werten gleichzeitig filtern.
Code:
Ich habe nun einen Button definiert der folgenden Code ausführt.
Private Sub Befehl73_Click()
Dim strFilter As String
If Kombinationsfeld1.Value „“ Then
strFilter = strFilter & „[Datenfeld1] =“ & „’“ & Nz(Kombinationsfeld1.Value) & "’ AND "
End If
If Kombinationsfeld2.Value „“ Then
strFilter = strFilter & „[Datenfeld2] =“ & „’“ & Nz(Kombinationsfeld2.Value) & "’ AND "
End If
If Kombinationsfeld3.Value „“ Then
strFilter = strFilter & „[Datenfeld3] =“ & „’“ & Nz(Kombinationsfeld3.Value) & "’ AND "
End If
strFilter = Left(strFilter, Len(strFilter) - 5)
Forms![Formularname].Filter = strFilter
Forms![Formularname].FilterOn = True
End Sub
Problem:
Dieses Script **funktioniert soweit.
Ich kann das Formular anhand der Kombinationsfelder filtern.
Dies gelingt mir allerdings immer nur ein einziges Mal. Sobald ich das Formular ein zweites Mal filtern will, erhalte ich folgende Fehlermeldung.**
Laufzeitfehler ‚3146‘;
ODBC-Aufruf fehlgeschlagen.
[Microsoft][ODBC SQL Server Driver][SQL server]Unclosed quotation mark after the character string 'Wert aus Kombinationsfeld
)) Order BY „dbo“.„Tabellenname“.„ID“ '. (#105) [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'Wert aus Kombinationsfeld
'. (#102)
Erfolgslose Lösungsansätze
Meine Fähigkeiten in VB sind kaum vorhanden. Ich ging zuerst davon aus, dass ich den Filter deaktivieren müsste bevor ich ihn neu erstellen kann. FilterOn = False war allerdings erfolglos.
Ein weiterer Versuch war es den String strFilter komplett zu leeren, da ich vermutete, dass er einfach zuviele Daten erhält. strFilter = „“ hatte allerdings genau 0 Einfluss auf das Problem.
Ich habe auch versucht aus der VB-Abfrage eine SQL-Abfrage zu erstellen (SELECT FROM WHERE) allerdings auch ohne Erfolg.
Ich wäre froh, wenn mir jemand einen Tipp geben könnte was ich noch versuchen kann. Aktuell funktioniert der automatische Filter nur, wenn man nach jedem Filter das Formular schliesst und nochmal neu öffnet.