Hallo,
folgendes Beispiel-DataSet:
Ich möchte aus
Ich berechne in der Aufbereitung unter anderem jedoch die
Da die Zeitstempel der Stationen sich überschneiden können, muss ich die
Also momentan mache ich es so, da gibts nur unschöne Wiederholungen:
Spoiler anzeigen
Viele Grüße
folgendes Beispiel-DataSet:
Ich möchte aus
dtraw
, dtAufbereitet
befüllen. In dtraw
befinden sich zu bestimmten Zeitpunkten zwei Messwerte SubStatus und LEDStatus. Das Ganze ist pro Station jedoch unabhängig voneinander.Ich berechne in der Aufbereitung unter anderem jedoch die
Dauer
welche sich aus der Differenz zweier Zeitstempel
einer StationsID
ergibt. Da die Zeitstempel der Stationen sich überschneiden können, muss ich die
dtraw
stationsweise aufteilen. Gibt es die Möglichkeit diese "Stations-gefilterten" Tabellen schon im Designer so zu verknüpfen, dass sie dtraw
hinterherspringen nur halt mit Filter auf StationsID?Also momentan mache ich es so, da gibts nur unschöne Wiederholungen:
VB.NET-Quellcode
- 'Füll dtraw
- DS1.dtraw.Clear()
- Using cmd As SqlCommand = 'fertiger Command
- Using da As New SqlDataAdapter(cmd)
- da.Fill(DS1.dtraw)
- End Using
- End Using
- 'Füll dtStations
- Dim linquery As EnumerableRowCollection(Of DataSet1.dtrawRow)
- linquery = From t In DS1.dtraw Where t.StationsID = 1
- For Each result In linquery
- DS1.dtStation1.AdddtStation1Row(result.Zeitstempel, result.SubStatus, result.LEDStatus, result.StationsID)
- Next
- linquery = From t In DS1.dtraw Where t.StationsID = 2
- For Each result In linquery
- DS1.dtStation2.AdddtStation2Row(result.Zeitstempel, result.SubStatus, result.LEDStatus, result.StationsID)
- Next
- linquery = From t In DS1.dtraw Where t.StationsID = 3
- For Each result In linquery
- DS1.dtStation3.AdddtStation3Row(result.Zeitstempel, result.SubStatus, result.LEDStatus, result.StationsID)
- Next
- linquery = From t In DS1.dtraw Where t.StationsID = 4
- For Each result In linquery
- DS1.dtStation4.AdddtStation4Row(result.Zeitstempel, result.SubStatus, result.LEDStatus, result.StationsID)
- Next
- Dim bis As DateTime
- Dim von As DateTime
- 'Füll dtAufbereitet
- DS1.dtAufbereitet.Clear()
- von = DS1.dtStation1(0).Zeitstempel
- Dim diff = TimeSpan.FromSeconds(99999)
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation1(0).SubStatus, diff.TotalSeconds * DS1.dtStation1(0).SubStatus, DS1.dtStation1(0).LEDStatus, 1)
- For i = 1 To DS1.dtraw.Count - 1
- bis = DS1.dtStation1(i - 1).Zeitstempel
- von = DS1.dtStation1(i).Zeitstempel
- diff = bis - von
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation1(i).SubStatus, diff.TotalSeconds * DS1.dtStation1(i).SubStatus, DS1.dtStation1(i).LEDStatus, 1)
- Next
- von = DS1.dtStation2(0).Zeitstempel
- diff = TimeSpan.FromSeconds(99999)
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation2(0).SubStatus, diff.TotalSeconds * DS1.dtStation2(0).SubStatus, DS1.dtStation2(0).LEDStatus, 2)
- For i = 1 To DS1.dtraw.Count - 1
- bis = DS1.dtStation2(i - 1).Zeitstempel
- von = DS1.dtStation2(i).Zeitstempel
- diff = bis - von
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation2(i).SubStatus, diff.TotalSeconds * DS1.dtStation2(i).SubStatus, DS1.dtStation2(i).LEDStatus, 2)
- Next
- von = DS1.dtStation3(0).Zeitstempel
- diff = TimeSpan.FromSeconds(99999)
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation3(0).SubStatus, diff.TotalSeconds * DS1.dtStation3(0).SubStatus, DS1.dtStation3(0).LEDStatus, 3)
- For i = 1 To DS1.dtraw.Count - 1
- bis = DS1.dtStation3(i - 1).Zeitstempel
- von = DS1.dtStation3(i).Zeitstempel
- diff = bis - von
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation3(i).SubStatus, diff.TotalSeconds * DS1.dtStation3(i).SubStatus, DS1.dtStation3(i).LEDStatus, 3)
- Next
- von = DS1.dtStation4(0).Zeitstempel
- diff = TimeSpan.FromSeconds(99999)
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation4(0).SubStatus, diff.TotalSeconds * DS1.dtStation4(0).SubStatus, DS1.dtStation4(0).LEDStatus, 4)
- For i = 1 To DS1.dtraw.Count - 1
- bis = DS1.dtStation4(i - 1).Zeitstempel
- von = DS1.dtStation4(i).Zeitstempel
- diff = bis - von
- DS1.dtAufbereitet.AdddtAufbereitetRow(von, diff.TotalSeconds, DS1.dtStation4(i).SubStatus, diff.TotalSeconds * DS1.dtStation4(i).SubStatus, DS1.dtStation4(i).LEDStatus, 4)
- Next
Viele Grüße
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()