Datum vergleichen über OleDb

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mephisto.

    Datum vergleichen über OleDb

    Hi,

    als Schulprojekt soll ich zur Zeit einen kleinen Organizer entwickeln, der ziehmlich simpel Termine anzeigt, speichert und löscht. Soweit, so klar. Allerdings will ich in einem Datagrid nur die Termine anzeigen, die nicht in der Vergangenheit liegen, bzw. spätestens gestern. Da stellt sich mir das Problem des Datumvergleiches.

    Das Format in der Access .mdb Datenbank ist "Date/time": 18.11.2009 13:37:00 z.B.

    Geplant ist das so, dass ich in der SQL-Anweisung bereits diese Termine rausfilter. "mclTermine" ist der Monthcalender, mit dem das aktuelle Datum, bzw. später auch ein anderes Datum gewählt werden kann. AddDays(-1) ist dafür, um auch den gestrigen Tag mit einzuschließen. " 00:00:00" muss natürlich zur vervollständigung hinten angehängt werden. Der vollständige Commandtext sieht dann so aus:

    SELECT Zeit, Benennung FROM Eintragungen WHERE Zeit < '" & mclTermine.SelectionRange.Start.AddDays(-1) & " 00:00:00'

    SQL kriegt die Anweisung:

    SELECT Zeit, Benennung FROM Eintragungen WHERE Zeit < '17.11.2009 00:00:00'

    Fehlermeldung: "Datentyp in Kriterienausdruck unverträglich."

    Ich habe bereits mehrere Foreneintrage ergoogled, wo viele unterschiedliche Tipps gegeben wurden, wie z.B. # anstatt von ' oder mit LIKE vergleichen (was nicht das gewünschte Resultat bringen würde) sowie einfach nur das Datum hinzuschreiben, da ' ' ja bekanntlich einen String eröffnet und schließt. Allerdings hat keiner dieser Tipps was gebracht.

    Habt ihr eine Idee, was ich falsch mache?

    Grüße, Mephisto.
    Hi,

    danke für den Hinweis, ich wusste nicht dass es dieses "Feature" gibt.

    Ich habe mir die erste Seite an Einträgen durchgelesen, die bei der Suche raus kamen, allerdings bin ich nicht dahinter gestiegen, wie genau das Parameter zu nutzen ist. Die Tutorials, bzw. eher Beispiele, die ich gefunden habe, waren unterschiedlich und nicht wirklich verständlich. Über eine kleine Erklärung der nötigen Syntax würde ich mich sehr freuen.

    Grüße, Mephisto.

    Mephisto schrieb:

    Ich habe mir die erste Seite an Einträgen durchgelesen, die bei der Suche raus kamen, allerdings bin ich nicht dahinter gestiegen, wie genau das Parameter zu nutzen ist. Die Tutorials, bzw. eher Beispiele, die ich gefunden habe, waren unterschiedlich und nicht wirklich verständlich.

    Da viele der Posts zum Thema oleDPParameter von mir sind und du die Posts nicht verstehst, macht es wohl kaum Sinn, wenn ICH das erläutere. Möge ggfs dann jemand anders machen.

    Anyway:
    Was ist an folgendem unverständlich?

    SELECT Feld FROM Tabelle WHERE IrgendeinDatum < ?
    Cmd.Parameters.Add(New OleDBParameter With {.Value = now() })
    Cmd.ExecuteQuery
    Hi,

    ich versuche mittlerweile im selben Projekt einen UPDATE Befehl mit dem Parameter laufen zu lassen. Allerdings scheint das Parameter (genau das selbe wie beim Lesen) zu keiner Zeile zu passen. Ich habe vielfach überprüft, ob es den Eintrag bei dem Update-Befehl gibt, und es gibt ihn wirklich. Trotzdem kriege ich bei executenonquery immernoch das result von 0 betroffenen Zeilen. Sobald ich die Bedingung mit dem Parameter raus nehme, geht es fehlerfrei.

    Jemand ne Idee?