BindingSource Datum- & Zeitbereichsfilter

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    BindingSource Datum- & Zeitbereichsfilter

    Hallo,

    ich schreibe mir per Datumsfilter Datensätze aus der Datenbank in ein DataSet, meinetwegen von jetzt bis 5 Tage zurückliegend. Nun möchte ich diese Daten per BindingSource nach Zeitbereichen filtern (Früh-, Spät- und Nachtschicht), also z.B. für alle 5 Tage nur die Daten anzeigen, die zwischen 08:00 - 15:59 Uhr liegen. Mein bisheriger (teilweise ergoogelter) Ansatz sieht aus wie folgt:

    VB.NET-Quellcode

    1. Private Sub ShiftFilter()
    2. Dim filterBuilder As New StringBuilder()
    3. Dim filterFormat As String = "[Date] {0} '{1: dd.MM.yyyy HH:mm:ss}'"
    4. Dim dateStart = dtpFilterDateStart.Value.AddHours(-dtpFilterDateStart.Value.Hour).AddMinutes(-dtpFilterDateStart.Value.Minute).AddSeconds(-dtpFilterDateStart.Value.Second)
    5. Dim dateEnd = dtpFilterDateEnd.Value.AddHours(-dtpFilterDateEnd.Value.Hour).AddMinutes(-dtpFilterDateEnd.Value.Minute).AddSeconds(-dtpFilterDateEnd.Value.Second)
    6. Select Case True
    7. Case cbFilterShift.SelectedIndex = 1
    8. dateEnd = dateEnd.AddHours(7).AddMinutes(59).AddSeconds(59)
    9. Case cbFilterShift.SelectedIndex = 2
    10. dateStart = dateStart.AddHours(8)
    11. dateEnd = dateEnd.AddHours(15).AddMinutes(59).AddSeconds(59)
    12. Case cbFilterShift.SelectedIndex = 3
    13. dateStart = dateStart.AddHours(16)
    14. dateEnd = dateEnd.AddHours(23).AddMinutes(59).AddSeconds(59)
    15. End Select
    16. With filterBuilder
    17. .AppendFormat(filterFormat, ">=", dateStart)
    18. .Append(" AND ")
    19. .AppendFormat(filterFormat, "<=", dateEnd)
    20. End With
    21. LoadCycleDataBindingSource.Filter = filterBuilder.ToString()
    22. End Sub



    So kann ich natürlich den Zeitbereich nicht tageweise einschränken. Leider fällt mir dafür gerade auch kein Ansatz ein. Im Übrigen möchte ich die Filterung lokal, also nicht per SQL-Server machen, da ich die kompletten Daten sowieso lokal benötige. Kann mir jemand unter die Arme greifen? ;)

    MfG
    Peterle
    Und warum dann überhaupt per BindingSource.Filter-Property? Filter doch die Rohdaten und weise das Ergebnis der BS zu.
    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.