Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: pmmuc am August 07, 2020, 19:33:42

Titel: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: pmmuc am August 07, 2020, 19:33:42
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
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: markusxy am August 07, 2020, 20:12:53
Bei der ersten Zeile fehlt hinten ein Leerzeichen.
Einfach etwas sorgfältiger arbeiten.  ;)
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: pmmuc am August 07, 2020, 20:20:39
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
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: MzKlMu am August 07, 2020, 21:16:05
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.
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: pmmuc am August 07, 2020, 22:35:51
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
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: MzKlMu am August 08, 2020, 00:42:30
Hallo,
zeige bitte den vollständigen Code.
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: pmmuc am August 08, 2020, 08:24:46
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
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: DF6GL am August 08, 2020, 09:47:46
Hallo,

--lass ".Text" bei der Steuerelement-Referenz weg..

Zitat[Formulare]![frmRezeptAuswahl]![txtSuchbegriff].[Text]




--Zippe die accdb-Datei und vorher "Komprimieren/reparieren" ausführen.
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: ebs17 am August 08, 2020, 10:01:07
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 ...)
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: pmmuc am August 08, 2020, 10:26:48
Hallo Zusammen,

das war´s!
.[Text] weggelassen und Forms statt Formulare und schon funktioniert es.

Vielen, vielen Dank
Titel: Re: SQL-Code aus Abfrage in VBA erzeugt Fehlermeldung
Beitrag von: DF6GL am August 08, 2020, 12:29:20
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" & _
.
.