| |
VB & DatenbankenSELECT: Fehler im Syntax - komme nicht weiter | | | Autor: caramba | Datum: 19.01.14 15:11 |
| Hallo zusammen,
ich komme beim nachstehenden SELECT immer auf einen Syntaxfehler und finde die Ursache leider nicht.
Mittels dem SELECT will ich alle Rows bekommen, deren Datum in D1DatumBis < einem gewählten Datum ist (z.B. 2014-01-19) oder deren Datum in D1DatumVon > grösser einem gewählten Datum (z.B. 2014-01-25) ist.
Ich komme immer auf einen Syntaxfehler. Ich arbeite mit MySQL.
Kann mir jemand weiterhelfen?
Danke
Rainer
sSQL = "SELECT D1ID, D1Herkunft, D1Nr, D1Ziel, D1DatumVon, D1ZeitVon," & _
"D1DatumBis, D1ZeitBis, D2Art, D2Objekt, D2D1FK FROM tbldispo1 d1 INNER JOIN" & _
"tbldispo2 d2 ON d1.D1ID = d2.D2D1FK WHERE d2.D2Art = 'B' And (D1DatumBis <" & _
"'" & Format$(sDatumVon, "yyyy-mm-dd") & "' OR D1DatumVon > '" & Format$( _
sDatumBis, "yyyy-mm-dd") & ")'" | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: lanzarote | Datum: 20.01.14 14:39 |
| Hallo Rainer,
mach mal in deinen Strings am Zeilenende immer noch ein Leerzeichen, sonst fehlt es beim Verketten mit der nächsten Zeile. Dies macht zumindest beim Join Probleme:
... D1ZeitVon, " & _
... INNER JOIN " & _
usw. Gruß Dieter R. | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: crosstravel | Datum: 20.01.14 16:33 |
| Hallo,
ein zusätzliche Leerstelle bringt leider auch keine Abhilfe. Ich vermute, das Problem liegt
beim Datum. Könnte es vielleicht sein, dass die Angabe von 2 unterschiedlichen Feldern hier
nicht möglich ist (D1DatumVon und D1DatumBis) ?
Danke
Rainer | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: lanzarote | Datum: 20.01.14 19:00 |
| Hallo Rainer,
ist das Datumsformat denn richtig (yyyy-mm-dd)? Kenne mich mit mySQL nicht aus, arbeite mit MS SQL Server. Dort hängt es auch davon ab, welche Ländereinstellung dem Benutzer zugeordnet ist, unter dem die Abfrage läuft. Denn der Datumsstring muss ja entsprechend interpretiert werden.
Ich würde auch noch den Tabellen-Alias d1 bzw. d2 vor alle Feldnamen setzen.
Gruß Dieter R. | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: JangoF | Datum: 21.01.14 01:24 |
| Am Schluß das )' muß ein ') sein.
Für Datumsfelder sollte man auch eigentlich "#" anstatt "'" nehmen.
Direkt im Befehl Format, quasi so
sSQL = "SELECT D1ID, D1Herkunft, D1Nr, D1Ziel, D1DatumVon, D1ZeitVon," & _
"D1DatumBis, D1ZeitBis, D2Art, D2Objekt, D2D1FK FROM tbldispo1 d1 INNER JOIN" _
& _
"tbldispo2 d2 ON d1.D1ID = d2.D2D1FK WHERE d2.D2Art = 'B' And (D1DatumBis < " _
& _
Format$(sDatumVon, "\#yyyy-mm-dd\#") & " OR D1DatumVon > " & Format$( _
sDatumBis, "\#yyyy-mm-dd\#") & ")"
Beitrag wurde zuletzt am 21.01.14 um 01:26:14 editiert. | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: crosstravel | Datum: 23.01.14 11:59 |
| Hallo,
das Hash ist meiner meinung nach nur bei Access erforderliche; MySQL benötigt es nicht.
Gruss
rainer | |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: Franki | Datum: 23.01.14 23:42 |
| Hallo Rainer,
richtig, # braucht man bei Access.
Um der Lösung des Problem näher zu kommen würde ich die SQL Abfrage mal auf das notwendige Minimum einschränken und direkt das DateTime Feld in der Tabelle ansprechen.
z.B.
Sql = "SELECT * FROM DeineTabelle WHERE DeinDatumsfeld < '2014-01-01' & " Erst wenn das funktionierst gehst du zum OR über auf das zweite Feld mit festem Datum. Danach erst die Datumsangaben durch die Variablen ersetzen usw. usw.
So kann man das Problem schrittweise analysieren und dann den Code weiter ausbauen. Damit schließt man Fehlerquellen aus (oder findet sie) wenn die Abfrage dann komplexer wird. Bei solchen Sachen erstelle ich mir einfach eine Kleine Testdatenbank mit nur einer Tabelle und den notwendigen Feldern in denen dann Dummyeinträge stehen für die Tests.
Dieser Weg der Problemlösung geht meistens am schnellsten. Ich kenne mich mit MySQL in Verbindung mit VB auch nicht gut aus, aber so würde ich vorgehen.
Gruß
Frank
| |
Re: SELECT: Fehler im Syntax - komme nicht weiter | | | Autor: JangoF | Datum: 24.01.14 09:25 |
| Das Problem liegt einfach nur darin das am Schluss Klammer und Hochkomma in der Reihenfolge vertauscht wurden. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|