Hallo Zusammen,
ich versuche Daten aus einer Tabelle (Projects) zu selektieren basierend auf einer Mehrfachauswahl (Liste4), in der Projektkategorien stehen (also Text). Folgenden Code habe ich (relativer VBA-Laie) zusammengestellt:
Private Sub Befehl21_Click()
Dim strSQL As Variant
Dim strKrit As String
Dim itm As Variant
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
strSQL = "SELECT * FROM [Projects]"
Set dbs = CurrentDb
For Each itm In Me!Liste4.ItemsSelected
strKrit = strKrit & "," & Me!Liste4.ItemData(itm)
Next itm
If Len(strKrit) <> 0 Then
strSQL = strSQL & "Where Projects.Projektbezug IN (" & Mid(strKrit, 2) & ")"
End If
Set qdf = dbs.CreateQueryDef("Recordpool", strSQL)
DoCmd.OpenQuery "Recordpool", , acReadOnly
End Sub
Ich erhalte die Fehlermeldung "Laufzeitfehler '3075': Syntaxfehler (fehlender Operator) in Abfrageausdruck "Projects.Projektbezug IN (Bund (ohne Stern),Stern)'.
Ich habe versucht über Foreneinträge und per Google den Fehler zu finden, leider bis jetzt erfolglos. Kann mir jemand von Euch weiterhelfen?
Dankeschön im Voraus!
Gruß
Markus
Hallo,
Zitat
in der Projektkategorien stehen (also Text).
ungünstig. Die Tabelle gehört normalisiert, die Projektkategorien in eine separate Tabelle ausgelagert und über Schlüsselfelder in 1:n-Beziehung gesetzt.
ZitatPrivate Sub Befehl21_Click()
Dim strSQL As Variant String
Dim strKrit As String
Dim itm As Variant
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
strSQL = "SELECT * FROM [Projects] " 'Sicherheitshalber , bzw. erforderlich Leerzeichen anhängen.
Set dbs = CurrentDb
For Each itm In Me!Liste4.ItemsSelected
strKrit = strKrit & ",'" & Me!Liste4.ItemData(itm) & "'" ' Weil es sich um "Text" handelt, sind Hochkommata erforderlich.
Next itm
If Len(strKrit) <> 0 Then
strSQL = strSQL & "Where Projects.Projektbezug IN (" & Mid(strKrit, 2) & ")"
End If
.
.
.
Dankeschön Franz für die schnelle Hilfe! Und Du hast Recht, dass die Kategorie eigentlich nicht in die Tabelle gehört, das werde ich noch beheben. Klasse! Bin echt begeistert von diesem Forum.