Helmut: Datumwert in SQL übergeben

SQl - Anweisung (Teil):
RS.Open "SELECT ..... FROM .... WHERE (((....)='" & datum & "')) ORDER BY ... DESC; ", Conn

In der Variable datum steht ein Datumswert der auch in der Access DB als Datum/Uhrzeit typ definiert ist.

Ich übergebe den Datumswert von einer anderen ASP Seite.

Es kommt immer der fehler:
[Microsoft][ODBC Microsoft Access Driver] Datentypen in Kriterienausdruck unverträglich.

Was mache ich da falsch?

MFG
Helmut

  1. Hi,

    <quote>
    ='" & datum & "'
    </quote>

    ist vielleicht keine Datumsangabe, die die Jet DB-Engine von Access verstehen kann

    evt. solltest du (als Tip) die variable datum vorher mittels CDate(datum) in einen VBScript Wert vom Type "Date" konvertieren.

    Auch eine Möglichkeit wäre, die von der Jet DB-Engine evt. gegebenen internen Konvertierungsfunktionen zu benutzen.

    Gruß, Frank

    1. Danke für die fprschläge aber ich hab ein wenig rumgespielt mit den ergebnissen was ich von euch bekommen habe aber nix funktioniert.

      datum = "10.03.2004"
      datum = CDate(datum)

      RS.Open "SELECT ... FROM ... WHERE (((t_....datum)= "#" & Format(datum, "m-d-yy") & "#" )) ORDER BY t_.....id DESC; ", Conn

      Kompilierungsfehler in Microsoft VBScript- Fehler '800a0401'

      Anweisungsende erwartet

      /managementsystem/statistik/statistik_datum.asp, line 25

      RS.Open "SELECT t_besucher.id, t_besucher.besucherip, t_besucher.besuchername, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)= "#" & Format(datum, "m-d-yy") & "#" )) ORDER BY t_besucher.id DESC; ", Conn
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------^

      Da wir er di # nicht und bei den anderen wenn ich nur das CDate hernehme dann kommt die gleiche Meldung

      1. Hallo,

        datum = "10.03.2004"
        datum = CDate(datum)

        RS.Open "SELECT t_besucher.id, t_besucher.besucherip, t_besucher.besuchername, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)= "#" & Format(datum, "m-d-yy") & "#" )) ORDER BY t_besucher.id DESC; ", Conn

        Hier sind zwei " zuviel, oder es fehlt einmal (" &) und einmal (& ").

        SQLString = "SELECT t_besucher.id, t_besucher.besucherip, t_besucher.besuchername, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)= #" & Format(datum, "m-d-yy") & "# )) ORDER BY t_besucher.id DESC; "

        MsgBox (SQLString) 'Das ist zum Prüfen, ob der SQL-String korrekt ist

        RS.Open SQLString, Conn

        viele Grüße

        Axel

        PS: Bekommt Ihr eigentlich nirgends mehr gesagt, wie man in einem Quellcode sinnvoll mit Testausgaben arbeitet, um Fehler zu finden?

        1. Hallo

          SQLString = "SELECT t_besucher.id, t_besucher.besucherip, t_besucher.besuchername, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)= #" & Format(datum, "m-d-yy") & "# )) ORDER BY t_besucher.id DESC; "
          MsgBox (SQLString) 'Das ist zum Prüfen, ob der SQL-String korrekt ist
          RS.Open SQLString, Conn

          PS: Bekommt Ihr eigentlich nirgends mehr gesagt, wie man in einem Quellcode sinnvoll mit Testausgaben arbeitet, um Fehler zu finden?

          Diejenigen, die den Quellcode so schreiben, brauchen hier nicht zu posten :-) Sie finden die einfachen Fehler im SQL-Statement schon vorher.

          Ich fürchte, das sind Versuche zur Optimierung, die man leider viel zu oft in Tutorials oder Handbüchern finden kann. Schau Dir mal die Beispiele in http://www.php.net/manual/de/function.mysql-query.php an :-( Meinst Du, dass es bei ASP viel besser aussieht?

          Freundliche Grüsse,

          Vinzenz

  2. Vielleicht versteht Access etwas anderes unter dem Datentyp Date als Deine ASP-Seite...?!
    Mit Daten ist das immer so ne Sache....

  3. SQl - Anweisung (Teil):
    RS.Open "SELECT ..... FROM .... WHERE (((....)='" & datum & "')) ORDER BY ... DESC; ", Conn

    In der Variable datum steht ein Datumswert der auch in der Access DB als Datum/Uhrzeit typ definiert ist.

    ... der dann duch die Strinverkettung ..." & datum & "... in einen String umgewandelt wird. Lass Dir den Wert von ("Datum: " & datum) mal ausgeben (MsgBox oder ins Dokument schreiben). Was wird da gezeigt?

    Eine Abfrage mit Where-Kriterium Datumswert sieht in Access so aus:

    SELECT Tabelle1.Name, Tabelle1.Datum
    FROM Tabelle1
    WHERE Tabelle1.Datum = #3/11/04#;
    -> Alle Datensätze, die in Tabelle1.Datum den 11.03.2004 stehen haben.

    Wenn datum wirklich eine Variable vom Typ Date ist, dann:

    SQLString = "SELECT Tabelle1.Name, Tabelle1.Datum FROM Tabelle1 WHERE Tabelle1.Datum = #" & Format(datum, "m-d-yy") & "#"

    viele Grüße

    Axel