Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fehler in SQL Anweisung
#1
Hallo zusammen,

sieht jemand in diesem String den oder die Fehler?

MySQL = "Select [Nr],[Datum],[ID],[Name],[Pin],[Betrag],[Mitarbeiter],[Entwertet],[Land]From [Daten$] Where " & _
        "[Datum] Between '" & Chr(37) & DatumVon & Chr(37) And Chr(37) & DatumBis & Chr(37) & "' " & _
        "And [Name] Like' " & suchName1 & " '"

mfg Juergen
Antworten Top
#2
Hallo,

du solltest die CHR(37) weg lassen und einfach ein # = CHR(35) schreiben.


Code:
sql = "SELECT * FROM [Table$] WHERE [Date] BETWEEN #" & DateMin & "# AND #" & DateMax & "#
Dann musst du noch darauf achten, dass deine Datumsformate ganz genau stimmen ...

Außerdem fehlt ein Leerzeichen vor 'FROM' ... sollte aber nur ein Tippfehler sein.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#3
Hallöchen,

Du musst auch auf's korrekte Setzen der Hochkommas achten.
hier z.B.
"[Datum] Between '" & Chr(37) & DatumVon & Chr(37) And Chr(37) & DatumBis & Chr(37) & "' "
fängst Du nach between damit an und setzt es erst am Ende der Zeile zurück. Damit hast Du z.B. auch Dein And darin eingeschlossen ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallöchen,

mal noch zwei Hinweise.
Wie z.B. Hochkommas gesetzt sind oder Variablen wie erwartet gefüllt, kannst Du übrigens ganz gut kontrollieren wenn Du die Strings mit

Debug.Print MySQL

im Direktfenster ausgibst.


Je nachdem, was Du für eine Datenquelle nutzt, kannst Du auch Tools wie den SQLDeveloper von Oracle oder Toad von Dell verwenden. Da kannst Du gleich sehen, was Deine Abfrage ausgibt und bekommst ggf. auch eine Fehlerstelle etwas genauer angezeigt, z.B. die Position in Deinem Abfragestring wo etwas nicht passen könnte. Ich bevorzuge übrigens den SQLDeveloper, der ist frei. Von Toad gibt's die aktuellen Versionen wohl nur noch als 30 Tage Trial. AM Besten mal googeln und schauen, was stimmt und passt Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo Sabina
leider keinen Erfolg damit



[
Bild bitte so als Datei hochladen: Klick mich!
wird leider nichts gefunden
lasse ich den Code ohne Between laufen, also nur mit einem Datum , dann funktioniert der String mit den % Zeichen also chr37




mfg. Juergen
Antworten Top
#6
Hallo schauan,

ich lasse es mir seither über eine MsgBox anzeigen 





[
Bild bitte so als Datei hochladen: Klick mich!
]
also für mich sieht der String gut aus , aber leider kein Erfolg damit.
ich werde mich natürlich mal nach einem entsprechenden Tool umschauen.

mfg. Juergen
Antworten Top
#7
Hallöchen,

# und % haben eigentlich bei einer Datumsangabe nix zu suchen. Ist denn Dein Feld mit dem Datum auch vom entsprechenden Typ oder ist es ein String?

Eine Datumsabfrage mit between hab ich z.B. so bei mir. Ich habe da mehrere Daten in einer Listbox zur Auswahl. Diese muss ich in der Abfrage entsprechend wandeln

'von:
datum(1) = "to_date ('" & Format(UserForm1.ListBox1.List(0, 1) - 5, "dd.mm.yyyy") & "', 'dd.mm.yyyy')"
'bis:
datum(2) = "to_date ('" & Format(UserForm1.ListBox2.List(0, 1) - 5, "dd.mm.yyyy") & "', 'dd.mm.yyyy')"
...
sql_string = sql_string & " AND (Tabelle.Feld between " & datum(1) & " AND " & datum(2) & ") "


Ich hab da auch sicherheitshalber auch noch Klammern drum herum Smile Die Angabe der Tabelle hab ich bei mir, weil ich in der kompletten Abfrage auf mehrere zugreife.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hallo Juergen,

zur Datumsformatierung:
Welche Datenbank wird abgefragt? SQL Server, MySQL, Oracle, ...

Like:
Da fehlen noch die Wildcards im Suchstring und dieser enthält auch noch jeweils ein Leerzeichen am Anfang und Ende.


Gruß Carsten
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste