Hallo,
ich habe ein Problem und bräuchte Hilfe.
In einem Formular habe ich ein Listenfeld, das über verschieden Buttons unterschiedlich gefiltert werden soll.
Wenn ich einen Filter in der Abfrage anlege funktioniert er einwandfrei.
Wenn ich nun den SQL-Code aus der Abfrage in VBA für meinen Button einfüge kommt immer der Fehler ,,Typen unverträglich"
Die Sub für den Button sieht so aus:
Private Sub cmdAuswahlAlles_Click()
Me!lstGefiltertNachName.RowSource = "SELECT DISTINCT tblRezept.RezeptID, tblRezept.RezTitel AS Rezept, tblRezKategorie.EssenTrinkenIDRef" & _
"FROM tblRezept RIGHT JOIN tblRezKategorie ON tblRezept.RezeptID = tblRezKategorie.RezeptIDRef " & _
"WHERE (((tblRezept.RezTitel) Like " * " & [Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text] & " * ") And ((tblRezKategorie.EssenTrinkenIDRef) = 4) And ((tblRezept.RezGeloescht) = False)) " & _
"ORDER BY tblRezept.RezTitel"
End Sub
Hat hier jemand eine Idee was hier falsch ist und wie ich diesen Fehler beheben kann.
Ich war bisher der Meinung den SQL-Code aus einer Abfrage kann ich auch problemlos in VBA einfügen. Offensichtlich gibt es hier Unverträglichkeiten oder Einschränkungen.
Schon mal vielen Dank für Eure Hilfe
pmmuc
Bei der ersten Zeile fehlt hinten ein Leerzeichen.
Einfach etwas sorgfältiger arbeiten. ;)
Vielen Dank für die Antwort,
ich habe nun das Leerzeichen zwischen ..Ref und den Anführungszeichen eingefügt - bringt leider keine Änderung; die Fehlermeldung ist immer noch identisch
Gruß
pmmuc
Hallo,
Texte müssen in Hochkomma eingeschlossen werden.
" WHERE RezTitel Like '*" & [Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text] & "*'" & " And EssenTrinkenIDRef = 4 And RezGeloescht = False ORDER BY RezTitel"Du hast das falsch zusammengesetzt.
Ich denke .Text ist hier auch nicht notwendig. Die Klammerinflation habe ich auch mal beseitigt.
Lasse Dir mit Debug.Print den zusammengesetzten SQL String anzeigen, dann kannst Du prüfen. In etwa so:
Private Sub cmdAuswahlAlles_Click()
Dim strSQL As String
strSQL = "SELECT DISTINCT ........
Debug.Print strSQL
Stop
Me!lstGefiltertNachName.RowSource = strSQL
Ungetestet.
Kleiner Tip, die Leerzeichen immer vor dem Schlüsselwort einfügen, dann fällt das sofort ins Auge wenn eines fehlt.
Hallo,
noch nicht wirklich erfolgreich.
Mitlerweile sieht mein Cod so aus:
Me!lstGefiltertNachName.RowSource = "SELECT DISTINCT tblRezept.RezeptID, tblRezept.RezTitel AS Rezept, tblRezKategorie.EssenTrinkenIDRef" & _
" FROM tblRezept RIGHT JOIN tblRezKategorie ON tblRezept.RezeptID = tblRezKategorie.RezeptIDRef" & _
" WHERE RezTitel Like '*" & [Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text] & "*'" & " And EssenTrinkenIDRef = 4 And RezGeloescht = False" & _
" ORDER BY RezTitel"
und es kommt die Fehlermeldung: Access kann das im Ausdruck angesprochene Feld '|1' nicht finden.
Was ist das Feld '|1' ?
Interessant ist auch, dass wenn ich mit debug.print mir den SQL-Code ausgeben lasse, die "inflationären" Klammern alle wieder da sind.
SELECT DISTINCT tblRezept.RezeptID, tblRezept.RezTitel AS Rezept, tblRezKategorie.EssenTrinkenIDRef FROM tblRezept RIGHT JOIN tblRezKategorie ON tblRezept.RezeptID = tblRezKategorie.RezeptIDRef WHERE (((tblRezept.RezTitel) Like "*" & [Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[text] & "*") AND ((tblRezKategorie.EssenTrinkenIDRef)=4) AND ((tblRezept.RezGeloescht)=False)) ORDER BY tblRezept.RezTitel;
Gruß
pmmuc
Hallo,
zeige bitte den vollständigen Code.
Hallo,
ich wollte soeben meine Access Datei hochladen.
Datei anhängen erlaubt aber keine .accdb Datei
Wie kann ich den vollständigen Code hochladen
Hab leider hier noch keine Erfahrung
Gruß
pmmuc
Hallo,
--lass ".Text" bei der Steuerelement-Referenz weg..
Zitat[Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text]
--Zippe die accdb-Datei und vorher "Komprimieren/reparieren" ausführen.
Zitat... " WHERE RezTitel Like '*" & [Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text] & "*'" & " ...
Spätestens hier arbeitet man rein in VBA, und das spricht englisch:
... " WHERE RezTitel Like '*" & Forms.frmRezeptAuswahl.txtSuchbegriff & "*' ...(Sieht auch irgendwie übersichtlicher aus ...)
Hallo Zusammen,
das war´s!
.[Text] weggelassen und Forms statt Formulare und schon funktioniert es.
Vielen, vielen Dank
Hallo,
und, wenn das Feld "txtSuchbegriff" sich in demjenigen Formular befindet, in dem der Code abläuft:
.
Zitat.
.WHERE RezTitel Like '*" & Me!txtSuchbegriff & "*'" & " And EssenTrinkenIDRef = 4 And RezGeloescht = False" & _
.
.