none
Datumsabfrgae über Variable im SQL-String RRS feed

  • Allgemeine Diskussion

  • ich verwende Visual Studio 2013

    Ich habe ein Problem mit der Datumsabfrage in einem SQL-Befehl. Es geht um folgenden Code:

     'aktuelle Reise abfragen
            connw.ConnectionString =
               "Provider=Microsoft.Jet.OLEDB.4.0;" &
           "Data Source=" & lwnetz & "\einstellungen.mdb"

            Dim Aktuelles_Reisedatum As Date

            Aktuelles_Reisedatum = Format(Date.Now, "short date")


            cmdnw.Connection = connw
            cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > " & Aktuelles_Reisedatum & ""
            connw.Open()
            readertrip = cmdnw.ExecuteReader()

    Nach Aufruf des SQL-befehls erscheint folgende Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Syntaxfehler in Zahl in Abfrageausdruck 'Reise_Startdatum > 03.03.2014'.

    Auch eine Änderung (# vor den Ausdruck)

            cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > #" & Aktuelles_Reisedatum & "#"

    bringt dann folgende Fehlermelung

    Zusätzliche Informationen: Syntaxfehler in Datum in Abfrageausdruck 'Reise_Startdatum > #03.03.2014#'.

    Ich bin fast am verzweifeln. Ist hier jemand, der mir den richtigen Code geben kann. Ich bin schon jetzt für die Antworten dankbar.

    • Typ geändert Ciprian Bogdan Freitag, 21. März 2014 16:22 keine Rückmeldung des Fragestellenden
    Montag, 3. März 2014 06:14

Alle Antworten

  • probier´s mal mit " ' " + Aktuelles_Reisedatum.ToString() + " '  "


    • Bearbeitet sleepy007 Mittwoch, 5. März 2014 12:22
    Montag, 3. März 2014 06:25
  • Danke für die Antwort. Funktioniert leider auch nicht. :-(
    Montag, 3. März 2014 07:42
  • wie sah die abfrage aus und welche fehlermeldung kam?
    Montag, 3. März 2014 08:01
  • Hallo Holger,

    ich würde die WHERE Clausel im SQL-String nicht selbst zusammenbauen.

    Besser ist es eine Parameterabfrage zu verwenden, das hat nicht nur den Vorteil, dass Du Dich nicht mit der Datumsformatierung auseinandersetzen musst, sondern verhindert auch sich eine Sicherheitslücke ins Programm einzubauen.

    Falls Du Hilfe bei Parameterafrage brauchst melde Dich noch mal.

    Grüße

    Roland

    Montag, 3. März 2014 08:26
  • Zu der Parameterabfrage bräuchte ich noch Hilfe. Wäre über dein Hilfe dankbar
    Montag, 3. März 2014 08:35
  • cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > ?"
    cmdnw.Parameters.AddWithValue("DATENOW", Date.Now)

    so müsste es in etwa aussehen, wenn Du eine Access Datenbank als Backend nutzt.
    • Bearbeitet dt125fahrer Montag, 3. März 2014 08:37 Tippfehler
    Montag, 3. März 2014 08:37
  •  cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > '  Aktuelles_Reisedatum.ToString()  ' "

    Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Datentypen in Kriterienausdruck unverträglich.

    Aber auch ....

    cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > " 'Aktuelles_Reisedatum.ToString()'  " "brachte keinen Erfolg

    Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Reise_Startdatum >'.

    Montag, 3. März 2014 08:38
  •  cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > '  Aktuelles_Reisedatum.ToString()  ' "

    Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Datentypen in Kriterienausdruck unverträglich.

    Aber auch ....

    cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > " 'Aktuelles_Reisedatum.ToString()'  " "brachte keinen Erfolg

    Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Reise_Startdatum >'.

    dann laß doch mal das tostring weg:

     cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > '" +  Aktuelles_Reisedatum + " ' "


    • Bearbeitet sleepy007 Mittwoch, 5. März 2014 12:23
    Montag, 3. März 2014 08:40
  • Hallo dt125fahrer,

    kommt folgende Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Datentypen in Kriterienausdruck unverträglich.

    Montag, 3. März 2014 08:40
  • Ok, kannst Du mir noch sagen von welchem Datentyp das Feld Reise_Startdatum ist?

    Wahrscheinlich ist das kein Date-Typ

    Montag, 3. März 2014 08:43
  • jetzt hat es geklappt, dt125fahrer

    Folgender Aufruf mit den parametern hat funktioniert. Danke nochmals für die schnelle Hilfe

    cmdnw.CommandText = "SELECT Reise_Nummer FROM Reisen WHERE Reise_Startdatum > ?"
            cmdnw.Parameters.AddWithValue("DATENOW", Format(Date.Now, "short date"))
            connw.Open()

    Montag, 3. März 2014 08:49
  • Falls das Feld "Reise_Startdatum" kein Date Feld ist, würde ich Dir dringend anraten das zu ändern.

    Wenn das nicht in Deiner Macht steht, weil die Datenbank nicht in Deiner Verantwortung liegt, wäre es interessant zu wissen in welcher Form das Datum in dem Feld steht.

    Falls das Feld vom Typ Text ist, muss das Datumsformat zwingend in der Reihenfolge Jahr, Monat, Tag aufgebaut sein, sonst hast Du keine Chance einen sinnvollen Datumsvergleich durchzuführen.

    Grüße

    Roland

    Montag, 3. März 2014 08:51
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************

    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Freitag, 21. März 2014 16:22