Datumsfilter - Jahrübergreifend

  • VB.NET

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

    Datumsfilter - Jahrübergreifend

    Hi,

    ich würde mein Datagridview gerne mit einem Datumsbereich filtern. Mein erster Versuch zeigt mir leider nicht das richtige Ergebnis an.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim datea, dateb As Date
    3. datea = Date1.Text
    4. dateb = Date2.Text
    5. Me.DBBindingSource.Filter = "Datum >= '" & datea & "' and Datum <= '" & dateb & "'"
    6. End Sub


    Kann mir da einer auf die Sprünge helfen?

    Vielen Dank :)
    Fangen wir doch erstmal mit Option Strict On an, denn das hier widerspricht dem sehr wahrscheinlich:

    VB.NET-Quellcode

    1. Dim datea, dateb As Date
    2. datea = Date1.Text

    Wenn ich die Daten zu Fuß eingebe, läuft es: .Filter = "Datum >= '01.12.2001' and Datum <= '31.12.2001'" Daher stellt sich tatsächlich die Frage, was in den Texten für Angaben stehen und was in der Datenquelle. Und was ist denn überhaupt die Datenquelle der BindingSource? Und welchen Typ hat die Datums-Property?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    Derzeit habe ich es so:

    VB.NET-Quellcode

    1. ​DBBindingSource.Filter = "Datum >= '" & Format(Start_Date.Value, "dd.MM.yyyy") & "' and "Datum <= '" & Format(End_Date.Value, "dd.MM.yyyy") & "'"


    Hier kann ich ohne Probleme filtern sofern sich der Bereich innerhalb eines Monats befindet. Monats/Jahresübergreifend funktioniert so leider nicht.

    Start und End_Date sind DateTimePicker.

    Hat da noch jemand eine Idee wie ich auch über Monat bzw. Jahre hinweg filtern kann?

    In der DB Spalte Datum sind die Werte im Format 01.01.2019 bzw. dd.MM.yyyy hinterlegt.

    Danke Euch :)

    Neu

    Jo, dann weiß ich auch nicht recht.
    Aber du kannst mal hier gugge.
    Da bilde ich ganz allgemein Filter-Strings.
    Für die Date-Literale verwende ich da übrigens # statt '.

    Aber vmtl. besser wäre, du würdest die dort gegebene Methode komplett übernehmen - die kann ja auch mit alle anneren Datentypen richtig umgehen.

    Neu

    Hallo,
    dein Filter ist ein in String gewandeltes Datum.
    Durch Format(Datum, "dd.mm.yyyy") wandelst Du das Datum in einen Anzeigestring.

    Dadurch erhälst Du das Ergebnis wie in Post 5 beschrieben.

    Entweder Du versuchst mal mit >=Start_Date.Value.date <=End_Date.Value.date

    Das Datumsformat enthält auch noch weitere Informationen, die Du mit .Date auf die reinen Datumsinformationen reduzieren kannst.

    Oder kannst auch den Datumswert in Timestamp umrechnen dann hast Du als Ergebnis einen Integerwert den Du mit <= oder >= filtern kannst.

    Gruß