strSQL Textfeld (Access)

Liebe Experten
Ich schaffe es nicht, in diesem Code eine zusätzliche Bedingung einzubauen: Der Eintrag im Textfeld Ort muss sein PF oder RI, also nach Ausblenden=0 einfügen z.B:
AND Ort = „PF“ or „RI“
geht nicht. Wie muss man das machen bitte?

dteZeitpunkt = Format(DateAdd(„n“, 3, Now), „hh:mm“)
strSQL = „SELECT * FROM Rplakt WHERE NOT ISNULL (Rangierfahrt) AND Ausblenden=0 AND Datum=date() AND Zeit=#“ & dteZeitpunkt & „#“
Set db = CurrentDb
Set rst = db.OpenRecordset(strSQL)

Hallo,

Der Eintrag im Textfeld Ort muss sein PF oder RI …

AND Ort = „PF“ or „RI“

Was Du als Code geschrieben hast ist etwas anderes als im Text.
Du meinst:

AND Ort = „PF“ Or Ort = „RI“

Ort = „PF“ Or „RI“ Führt zum Fehler ‚Typen unverträglich‘.

Das Programm möchte Rechnen und benötigt dazu Zahlen, keinen Text.
Der logische Operator setzt im Ergebnis alle Bits, die in jedem der beiden Werte gesetzt sind. 2 Or 2 ist also 2, jeweils das selbe Bit.
1 Or 2 ergibt 3, 5 Or 3 = 7.

Das Letzte noch einmal binär zum besseren Verständnis:

101
011
---
111

Das ist etwas völlig anderes.

Gruß Rainer

Guten Tag.

AND Ort = „PF“ or „RI“

ist syntaktisch falsch, wie schon jemand pust. Dass es gar nicht funktioniert, liegt an einer anderen Falle der Syntax, nämlich den Anführungsfüßchen, die einer bestimmten Mimik folgen müssen.

dteZeitpunkt = Format(DateAdd(„n“, 3, Now), „hh:mm“)
strSQL = „SELECT * FROM Rplakt WHERE NOT ISNULL
(Rangierfahrt) AND Ausblenden=0 AND Datum=date() AND Zeit=#“ &
dteZeitpunkt & „#“

strSQL="SELECT \* FROM Rplakt WHERE ... AND (Ort =" + \_
**""""+ \_  
"PF"+ \_  
""""+ \_**  
" OR Ort ="+ \_
**""""+ \_  
"RI"+ \_  
""""** + \_
")"

Zur Erklärung: Zunächst solltest du Klammern verwenden, um die einzelnen logischen Abschnitte der verschachtelten SQL-Kriterien sauber zu trennen. Erhöht die Lesbarkeit und verhindert Überraschungseier ("(laber AND blubb) OR NOT bla" ist etwas anderes als „laber AND (blubb OR NOT bla)“).

Dann muss man, wenn man Literale in Variable basteln will, genau darauf achten, dass die Anführungsfüße stimmen - manchmal einfach, manchmal verdoppelt, und siehe oben sogar vervierfacht. Das ist eine Besonderheit in VB, und ich habe die Erfahrung gemacht, dass man solche Konstrukte am besten auf mehrere Zeilen verteilt, so wie im obigen Schnipsel geschehen. Sollte - Tippfehler vorbehalten - eigentlich in der Lage sein, Rangierfahrten nach Pforzheim* oder wo auch immer zu selektieren.

Gruß Eillicht zu Vensre

*PW: Zugabteil mit zwei Reisenden, einer macht die ganze Zeit „la, la, laa“. „Warum machen Sie das?“ — „Damit ich mir merke, dass ich in Singen aussteigen muss.“ — „Bin ich froh, dass Sie nicht nach Pforzheim wollen.“

Vielen Dank für die kompetenten Antworten.
Dann mache ich es anderes. Ich lasse die Prozedur von einer Abfrage statt der Tabelle laufen, dann funktioniert es auch.

P.S
Das ist ein guter Witz mit Singen und Pforzheim!
Grüsse aus der Schweiz

SQL-Anweisung mit Berücksichtigung des Orts:
strSQL = „SELECT * FROM Rplakt WHERE NOT ISNULL
(Rangierfahrt) AND Ausblenden=0 AND Datum=date() AND Zeit=#“ &
dteZeitpunkt & „# and (Ort =‚PF‘ or Ort=‚RI‘)“

Gruß EPa