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:
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
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
- Private Sub ShiftFilter()
- Dim filterBuilder As New StringBuilder()
- Dim filterFormat As String = "[Date] {0} '{1: dd.MM.yyyy HH:mm:ss}'"
- Dim dateStart = dtpFilterDateStart.Value.AddHours(-dtpFilterDateStart.Value.Hour).AddMinutes(-dtpFilterDateStart.Value.Minute).AddSeconds(-dtpFilterDateStart.Value.Second)
- Dim dateEnd = dtpFilterDateEnd.Value.AddHours(-dtpFilterDateEnd.Value.Hour).AddMinutes(-dtpFilterDateEnd.Value.Minute).AddSeconds(-dtpFilterDateEnd.Value.Second)
- Select Case True
- Case cbFilterShift.SelectedIndex = 1
- dateEnd = dateEnd.AddHours(7).AddMinutes(59).AddSeconds(59)
- Case cbFilterShift.SelectedIndex = 2
- dateStart = dateStart.AddHours(8)
- dateEnd = dateEnd.AddHours(15).AddMinutes(59).AddSeconds(59)
- Case cbFilterShift.SelectedIndex = 3
- dateStart = dateStart.AddHours(16)
- dateEnd = dateEnd.AddHours(23).AddMinutes(59).AddSeconds(59)
- End Select
- With filterBuilder
- .AppendFormat(filterFormat, ">=", dateStart)
- .Append(" AND ")
- .AppendFormat(filterFormat, "<=", dateEnd)
- End With
- LoadCycleDataBindingSource.Filter = filterBuilder.ToString()
- 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