title image


Smiley TIPP: Anführungszeichen und Apostrophe - ein kurzer Exkurs...
Nun - ohne Begrenzungszeichen weiss eine Programmiersprache (das ist kein Spezifikum von SQL oder VB(A), das gilt fast universell) nicht, was jetzt eine Variable, was ein reserviertes Wort und was jetzt eine Text-/Stringkonstante sein soll - oder anders gesagt: Man muss Stringkonstanten in Begrenzungszeichen einschließen, um sie als solche zu kennzeichnen.



Im genannten Beispiel ist es ein bisschen komplizierter, weil es sozusagen Begrenzungszeichen auf 2 Ebenen gibt - die äusseren Anführungszeichen für VBA und die inneren Apostrophe (es könnten auch Anführungszeichen sein, die schreiben sich nur etwas schwerer, siehe unten) für die aus diesem VBA-String resultierende SQL.



Also



"Kundennummer = '" & copy_kundennummer & " AND SeminarNr = " & copy_seminarNr



daraus wird nach Einsetzen der Variablen der String



Kundennummer = 'xyz AND SeminarNr = 123



und da fehlt schlicht und ergreifend das Apostroph nach "xyz", um es zum "AND" hin abzugrenzen.



Man kann das ganze wunderbar im Debug-Modus austesten, indem man den Ausdruck im Direktfenster auswertet und mit dem Resultat in die SQL-Ansicht des Abfrageentwurfs geht.



Die Grundregel für ein derartiges Filter-Kriterium ist, dass es einer SQL-WHERE-Klausel ohne das Wörtchen "WHERE" entsprechen muss, zum Testen muss man also in der SQL-Ansicht des Abfrageeditors noch "SELECT * FROM MeineTabelle WHERE" ergänzen, also:



SELECT * FROM MeineTabelle WHERE Kundennummer = 'xyz AND SeminarNr = 123



und bekommt dann natürlich die fehlerhafte SQL um die Ohren gehauen, wohingegen:



SELECT * FROM MeineTabelle WHERE Kundennummer = 'xyz' AND SeminarNr = 123



richtig ist.



Wie oben schon gesagt, kann man auch in SQL anstelle der Apostrophe Anführungszeichen verwenden, die muss man allerdings in VBA dann verdoppeln, also



"Kundennummer = """ & copy_kundennummer & """ AND SeminarNr = " & copy_seminarNr



oder auch (weniger lesbar, wie ich finde):



"Kundennummer = " & Chr(34) & copy_kundennummer & Chr(34) & " AND SeminarNr = " & copy_seminarNr



was dann in



Kundennummer = "xyz" AND SeminarNr = 123



resultiert.



Gruß aus dem Norden
Reinhard


Bitte immer die Access-Version angeben!
DB-Wiki


Wie man Fragen richtig stellt

YaccessAccess-FAQUnd ansonsten: Wikipedia




geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: