Daten zwischen zwei Datumswerten - Access DB

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Daten zwischen zwei Datumswerten - Access DB

    Hallo zusammen,

    ich habe ein Chart, welches mit Daten aus einer Access Datenbank gefüttert wird. Hier habe ich 2 DateTimePicker integriert, welche mir den Zeitraum der Daten, welche angezeigt werden sollen definieren.
    Mein Code sieht so aus:

    VB.NET-Quellcode

    1. Dim searchQuery As String = "SELECT [ID], [Datum], [Test], [Messwert_1], [Messwert_2], [Temperatur], [Tooltip], Right([Tooltip], 19) FROM 08_CO2 WHERE Datum between" & "'" & txtbox_von.Text & "'" & " and " & "'" & txtbox_bis.Text & "'" & " order by Datum ASC"


    Allerdings funktioniert der Filter nur innerhalb eines Monats. Sobald ich Daten von 2 Monaten auswähle (z.B. 30.07.18 - 01.08.18) gibt er mir keine Daten zurück.

    Der String aus beiden Textboxen sieht so aus:

    SELECT [ID], [Datum], [Test], [Messwert_1], [Messwert_2], [Temperatur], [Tooltip], Right([Tooltip], 19) FROM 08_CO2 WHERE Datum between'25.07.2018 00:00:00' and '01.08.2018 23:59:59' order by Datum ASC


    Kann mir jemand sagen, warum Access damit nicht zurechtkommt?

    Danke!
    Hast du da ein Leerzeichen hinter dem BETWEEN vergessen?

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    iOS78 schrieb:

    z.B. 30.07.18 - 01.08.18)
    Da findet wohl ein textueller Vergleich statt, und "30.07.18" ist höher als "01.08.18".
    2 Massnahmen:
    1. Ändere das Datenmodell, sodass dort Datum-Werte erwartet werden - keine Strings
    2. Benutze DbParameter
      Hierzu siehe auch Must-Know: Sql-Injection und weiterführende Links.
    Hi Leute,

    Vielen Dank für eure Denkanstöße!Im Endeeffekt waren es zwei Dinge, die ich anpassen musste. Die Datumwerte müssen im folgenden Format übergeben werden:

    VB.NET-Quellcode

    1. ​Dim searchQuery As String = "SELECT [ID], [Datum], [Test], [Messwert_1], [Messwert_2], [Temperatur], [Tooltip], Right([Tooltip], 19) FROM 08_CO2 WHERE Datum between" & "#" & txtbox_von.Text & "#" & " and " & "#" & txtbox_bis.Text & "#" & " order by Datum ASC"


    Das Datum muss im Format:
    (MM/dd/yyyy HH:mm:ss) übergeben werden.

    So funktioniert es bei mir jetzt!

    Danke!
    @iOS78 Nimm statt der TextBoxen je einen DateTimePicker, da kannst Du das Datum von formatieren wie immer Du es brauchst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!