Hallo Zusammen.
Ich habe denselben Beitrag bereits im Bereich Visual Basic-Script gepostet aber ich glaube hier kann mir eher geholfen werden, da ich glaube, dass sich das Problem auf ODBC und die SQL-Datenbank zurückführen lässt.
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. (Hier besteht die Chance dass ich einfach nicht weiss, wie ich die Abfrage schreiben soll, dass sie überhaupt funktioniert)
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.Da das Script beim ersten Mal reibungslos funktioniert und erst bei einem zweiten Aufruf die Fehlermeldung generiert, vermute ich, dass sich auf dem ODBC eine Abfrage aufhängt.