Hilfe beim Umbau eines Programmes

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 57 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    @VaporiZed

    Ups.. da war mein Test weg.... ;(

    Hab das nun so umgeändert. :)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub CheckMonth()
    2. ' Prüfen ob der gewählte Monat schon existiert
    3. Dim dtWeather = DsWeather.dtWeather
    4. Dim targetMonth As Integer = _dateService.CurrentMonth
    5. Dim monthExists As Boolean = False
    6. For Each row As DataRow In dtWeather.Rows
    7. Dim month As Integer = CInt(row("Monat"))
    8. If month = targetMonth Then
    9. monthExists = True
    10. Exit For
    11. End If
    12. Next
    13. If Not monthExists Then
    14. CreateNewTable(_dateService.CurrentYear, _dateService.CurrentMonth)
    15. End If
    16. End Sub
    17. Private Sub CreateNewTable(year As Integer, month As Integer)
    18. ' Hinzufügen des neuen Sheet für jeden Tag des Monats
    19. Debug.WriteLine("CreateNewTable wurde aufgerufen. Jahr: " & year & ", Monat: " & month.ToString())
    20. Dim dtWeather = DsWeather.dtWeather
    21. Dim daysInMonth As Integer = DateTime.DaysInMonth(year, month)
    22. For day As Integer = 1 To daysInMonth
    23. Dim sDay As String = $"{day:00}-{month:00}-{year}"
    24. dtWeather.AdddtWeatherRow(year, month, sDay, "", "", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
    25. Next
    26. End Sub

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    VB.NET-Quellcode

    1. For Each row As DataRow In dtWeather.Rows
    2. Dim month As Integer = CInt(row("Monat"))
    :cursing: Besser, aber an dieser Stelle immer noch untypisiert.

    VB.NET-Quellcode

    1. For Each row In dtWeather.Rows 'lässt man das As DataRow weg, ergibt das eine typisierte dtWeatherRow
    2. Dim month = row.Month 'direkter Zugriff möglich, da eine dtWeatherRow eine Spalte Month hat


    Stichwort Debuggen, auch wenn's hier mit ner ollen MessageBox ist:
    Schieb mal zwei Zeilen zwischen Zeile#4 und Z#5:

    VB.NET-Quellcode

    1. MessageBox(dtWeather.Rows.Count.ToString)
    2. MessageBox(dtWeather.Rows(0).Month.ToString & "<->" & targetMonth.ToString)
    Wenn da bei der ersten Box keine Zahl über 0 kommt, sind einfach keine Daten geladen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    Hab das alles nun mal in eine Klasse gebracht und entsprechend geändert.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class WeatherManager
    2. Private WithEvents _dateService As DateService
    3. Private WithEvents _xmlService As XmlService
    4. Public dtWeather As dsWeather.dtWeatherDataTable
    5. Public Sub New(dateService As DateService, xmlService As XmlService, weatherDataTable As dsWeather.dtWeatherDataTable)
    6. _dateService = dateService
    7. _xmlService = xmlService
    8. dtWeather = weatherDataTable
    9. End Sub
    10. Public Sub FilterByMonth(month As Integer, bindingSource As BindingSource)
    11. ' Filtert nur den aktl. Monat
    12. Dim filterExpression As String = "Monat = " & month.ToString()
    13. bindingSource.Filter = filterExpression
    14. End Sub
    15. Public Sub CheckMonth()
    16. ' Prüfen ob Monat vorhanden
    17. Dim targetMonth As Integer = _dateService.CurrentMonth
    18. For Each row As dsWeather.dtWeatherRow In dtWeather.Rows
    19. If row.Monat = targetMonth Then Exit Sub ' Monat gefunden, die Funktion beenden
    20. Next
    21. ' Monat nicht gefunden, CreateNewTable aufrufen
    22. CreateNewTable(_dateService.CurrentYear, targetMonth)
    23. End Sub
    24. Public Sub CreateNewTable(year As Integer, month As Integer)
    25. ' Hinzufügen des neuen Sheet für jeden Tag des Monats
    26. Debug.WriteLine("CreateNewTable wurde aufgerufen. Jahr: " & year & ", Monat: " & month.ToString())
    27. Dim daysInMonth As Integer = DateTime.DaysInMonth(year, month)
    28. For day As Integer = 1 To daysInMonth
    29. Dim sDay As String = $"{day:00}-{month:00}-{year}"
    30. dtWeather.AdddtWeatherRow(year, month, sDay, "", "", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
    31. Next
    32. End Sub
    33. End Class

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Und die Prüfmessageboxen? Die sollten Dir eigentlich noch zeigen, ob da überhaupt was gefunden werden kann. Oder klappt das jetzt doch alles?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    ​Die sollten Dir eigentlich noch zeigen, ob da überhaupt was gefunden werden kann...


    Einmal popte eine MSG auf.
    Der Code von eben, der funktioniert nun.
    ​dsWeather.dtWeatherRow In dtWeather.Rows
    Da stimmte erst etwas nicht, weil ich wieder mit den Namen durcheinander kam. dsWeather & dtWeather ... ggrrr
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Das war ein Grund, warum EdR auf die Benennung der tDS-Bestandteile hinwies. Ich nannte damals, als ich noch mit tDSs gearbeitet hatte, meine DataSets einfach nur Tds und die Tabellen nach dem, was drinstand. Und um einige Leser zu ärgern: Natürlich im Plural :P . Aber Präfixe verwendete ich schon jahrelang nur noch für Controls, da ich erkannte, dass sie sonst nur Ballast sind.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wie kann ich denn nun mit den Daten aus dem DT/DS meine Durchschnittsberechnungen machen.
    Letztendlich soll ein DGV wieder so befüllt werden, das die Spalten zwar bleiben, aber in den Zeilen dann keine Tage, sondern die Monate stehen.
    Bilder
    • wetterjahr.jpg

      177,54 kB, 1.149×207, 87 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Eine Möglichkeit wäre: "manuelles" Sammeln der Daten, Wertberechnung, Daten ins DGV packen.
    Du kannst auch eine DataTable anlegen, diese mit den berechneten Werten befüllen und dann die DataTable als DataSource (D)eines DGV hernehmen.

    In beiden Fällen musst Du alle Rows Deiner Rohdatentabelle durchgehen und die Daten sammeln. Wenn sich der Monat ändert, dann die bisherigen Daten zu jeweiligen Durchschnittswerten berechnen und dann eben ab ins DGV oder in die DataTable damit. Und dann die Sammeldatenvariablen auf Null setzen, damit die Daten des nächsten Monats reinkommen können.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Prinzipiell ja, aber: Das klappt mit den aktuellen Daten so nicht, da Monat eine Zahl zwischen 1 und 12 ist. Dementsprechend würden z.B. die Januarwerte aller Jahre miteinander verwurstet werden.
    Aber man kann ja auch Daten bei der Groupie-Bildung kombinieren, also z.B. dsWeather.dtWeather.GroupBy(Function(x) x.Monat.ToString("00") & " - " & x.Jahr). Dann ergeben sich die in Post#47 gezeigten/gewünschten Gruppenkeys mit Datumsangabe 01 - 2022 usw.

    ##########

    Eine Beispiel zum Erhalt der Teildaten:

    VB.NET-Quellcode

    1. Dim DataList = dtWeather.GroupBy(Function(x) x.Monat.ToString("00") & " - " & x.Jahr).Select(Function(x) (x.Key, x.Average(Function(y) y.Regen24h), x.Average(Function(y) y.SchneeTag), x.Average(Function(y) y.SchneeNacht)))

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @VaporiZed @Haudruferzappeltnoch


    Ich habe das nun erreicht aber irgendwie scheint das was nicht zu stimmen.
    Beispiel nur ein Monat:
    Regen ======> 3 Einträge: 12, 12, 22 = 15,5
    SchneeTag ==> 1 Eintrag: 4.5 = 1.5 ?(

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class frmYear
    2. Public dtWeather As dsWeather.dtWeatherDataTable
    3. Private Sub frmYear_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. CalculationYear()
    5. End Sub
    6. Private Sub CalculationYear()
    7. Try
    8. ' Überprüfen der Anzahl der Zeilen in dtWeather
    9. Debug.WriteLine("Anzahl der Zeilen in dtWeather: " & dtWeather.Rows.Count.ToString())
    10. ' Gruppieren und Durchschnittswerte für jeden Monat berechnen
    11. Dim groupedData = From row In dtWeather.AsEnumerable()
    12. Let Jahr = CInt(row.Field(Of Integer)("Jahr"))
    13. Let Monat = CInt(row.Field(Of Integer)("Monat"))
    14. Let Regen24h = If(Not row.IsNull("Regen24h"), CDbl(row.Field(Of Double)("Regen24h")), 0.0)
    15. Let SchneeTag = If(Not row.IsNull("SchneeTag"), CDbl(row.Field(Of Double)("SchneeTag")), 0.0)
    16. Let SchneeNacht = If(Not row.IsNull("SchneeNacht"), CDbl(row.Field(Of Double)("SchneeNacht")), 0.0)
    17. Let LuftfminTag = If(Not row.IsNull("LuftfminTag"), CDbl(row.Field(Of Double)("LuftfminTag")), 0.0)
    18. Let LuftfmaxTag = If(Not row.IsNull("LuftfmaxTag"), CDbl(row.Field(Of Double)("LuftfmaxTag")), 0.0)
    19. Let LuftfminNacht = If(Not row.IsNull("LuftfminNacht"), CDbl(row.Field(Of Double)("LuftfminNacht")), 0.0)
    20. Let LuftfmaxNacht = If(Not row.IsNull("LuftfmaxNacht"), CDbl(row.Field(Of Double)("LuftfmaxNacht")), 0.0)
    21. Let TempTag = If(Not row.IsNull("TempTag"), CDbl(row.Field(Of Double)("TempTag")), 0.0)
    22. Let TempNacht = If(Not row.IsNull("TempNacht"), CDbl(row.Field(Of Double)("TempNacht")), 0.0)
    23. Let WindTag = If(Not row.IsNull("WindTag"), CDbl(row.Field(Of Double)("WindTag")), 0.0)
    24. Let WindNacht = If(Not row.IsNull("WindNacht"), CDbl(row.Field(Of Double)("WindNacht")), 0.0)
    25. Where Regen24h > 0 Or SchneeTag > 0 Or SchneeNacht > 0 Or LuftfminTag > 0 Or LuftfmaxTag > 0 Or LuftfminNacht > 0 Or
    26. LuftfmaxNacht > 0 Or TempTag > 0 Or TempNacht > 0 Or WindTag > 0 Or WindNacht > 0
    27. Group By Monat, Jahr Into Group
    28. Select New With {
    29. .Monat = Monat,
    30. .Jahr = Jahr,
    31. .DurchschnittlicherRegen = Group.Average(Function(row) CDbl(row.Regen24h)),
    32. .DurchschnittlicherSchneeTag = Group.Average(Function(row) CDbl(row.SchneeTag)),
    33. .DurchschnittlicherSchneeNacht = Group.Average(Function(row) CDbl(row.SchneeNacht)),
    34. .DurchschnittlicheLuftfminTag = Group.Average(Function(row) CDbl(row.LuftfminTag)),
    35. .DurchschnittlicheLuftfmaxTag = Group.Average(Function(row) CDbl(row.LuftfmaxTag)),
    36. .DurchschnittlicheLuftfminNacht = Group.Average(Function(row) CDbl(row.LuftfminNacht)),
    37. .DurchschnittlicheLuftfmaxNacht = Group.Average(Function(row) CDbl(row.LuftfmaxNacht)),
    38. .DurchschnittlicheTempTag = Group.Average(Function(row) CDbl(row.TempTag)),
    39. .DurchschnittlicheTempNacht = Group.Average(Function(row) CDbl(row.TempNacht)),
    40. .DurchschnittlicherWindTag = Group.Average(Function(row) CDbl(row.WindTag)),
    41. .DurchschnittlicherWindNacht = Group.Average(Function(row) CDbl(row.WindNacht))
    42. }
    43. ' Erstellen eines neuen DataTables für die Durchschnittswerte
    44. Dim dtAverageWeather As New DataTable()
    45. ' Hinzufügen der erforderlichen Spalten zum neuen DataTable
    46. dtAverageWeather.Columns.Add("Monat", GetType(String))
    47. dtAverageWeather.Columns.Add("Ø-Regen", GetType(Double))
    48. dtAverageWeather.Columns.Add("Ø-SchneeTag", GetType(Double))
    49. dtAverageWeather.Columns.Add("Ø-SchneeNacht", GetType(Double))
    50. dtAverageWeather.Columns.Add("Ø-LuftfminTag", GetType(Double))
    51. dtAverageWeather.Columns.Add("Ø-LuftfmaxTag", GetType(Double))
    52. dtAverageWeather.Columns.Add("Ø-LuftfminNacht", GetType(Double))
    53. dtAverageWeather.Columns.Add("Ø-LuftfmaxNacht", GetType(Double))
    54. dtAverageWeather.Columns.Add("Ø-TempTag", GetType(Double))
    55. dtAverageWeather.Columns.Add("Ø-TempNacht", GetType(Double))
    56. dtAverageWeather.Columns.Add("Ø-WindTag", GetType(Double))
    57. dtAverageWeather.Columns.Add("Ø-WindNacht", GetType(Double))
    58. ' Array von Monatsnamen erstellen
    59. Dim monatsnamen As String() = {"", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}
    60. Dim year As Integer = 0
    61. ' Durchschnittswerte in das neue DataTable einfügen
    62. For Each item In groupedData
    63. year = item.Jahr
    64. Dim monatName As String = monatsnamen(item.Monat) ' Monatsnamen basierend auf dem numerischen Monat abrufen
    65. dtAverageWeather.Rows.Add(monatName, item.DurchschnittlicherRegen, item.DurchschnittlicherSchneeTag, item.DurchschnittlicherSchneeNacht, item.DurchschnittlicheLuftfminTag, item.DurchschnittlicheLuftfmaxTag, item.DurchschnittlicheLuftfminNacht, item.DurchschnittlicheLuftfmaxNacht, item.DurchschnittlicheTempTag, item.DurchschnittlicheTempNacht, item.DurchschnittlicherWindTag, item.DurchschnittlicherWindNacht)
    66. Next
    67. lblYear.Text = year.ToString()
    68. ' Das neue DataTable als Datenquelle für das DataGridView setzen
    69. dgvWeather2.DataSource = dtAverageWeather
    70. Catch ex As Exception
    71. Debug.WriteLine(ex.Message)
    72. End Try
    73. End Sub
    74. End Class

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Amelie“ ()

    Offensichtlich immer noch nichts kapiert. (Also nicht nur in diesen 51 Posts, sondern auch in den ganzen anderen Threads von dir zum Thema)
    Falsch:

    VB.NET-Quellcode

    1. Dim dtAverageWeather As New DataTable()
    2. ' Hinzufügen der erforderlichen Spalten zum neuen DataTable
    3. dtAverageWeather.Columns.Add("Monat", GetType(String))
    4. dtAverageWeather.Columns.Add("Ø-Regen", GetType(Double))
    5. dtAverageWeather.Columns.Add("Ø-SchneeTag", GetType(Double))
    6. dtAverageWeather.Columns.Add("Ø-SchneeNacht", GetType(Double))
    7. dtAverageWeather.Columns.Add("Ø-LuftfminTag", GetType(Double))
    8. dtAverageWeather.Columns.Add("Ø-LuftfmaxTag", GetType(Double))
    9. dtAverageWeather.Columns.Add("Ø-LuftfminNacht", GetType(Double))
    10. dtAverageWeather.Columns.Add("Ø-LuftfmaxNacht", GetType(Double))
    11. dtAverageWeather.Columns.Add("Ø-TempTag", GetType(Double))
    12. dtAverageWeather.Columns.Add("Ø-TempNacht", GetType(Double))
    13. dtAverageWeather.Columns.Add("Ø-WindTag", GetType(Double))
    14. dtAverageWeather.Columns.Add("Ø-WindNacht", GetType(Double))


    Richtig:

    VB.NET-Quellcode

    1. Dim dtAverageWeather As New WeatherDataTable()
    da sind doch alle Spalten schon drinne, und sind typisiert.



    Zu deine Rechenfehler kann man nix sagen, man sieht ja nicht die Ausgangsdaten.
    Wenn das geklärt ist, und auch, dass die Spalten auf AllowNull=False gesetzt werden sollten, dann mag jemand anders dir einen sauberen, funktionierenden BerechnungsCode zu geben.
    Aber er soll sich keine Hoffnung auf einen Lernerfolg machen - da falle ich ja schon seit Jahren immer wieder drauf rein.
    @ErfinderDesRades

    Wenn ich das nach deinem Vorschlag mache bekomme ich:

    VB.NET-Quellcode

    1. Dim dtAverageWeather As New WeatherDataTable()
    2. Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    3. Fehler BC30002 Der Typ "WeatherDataTable" ist nicht definiert.

    Warum das so ist weiß ich nicht. :( Nach meiner Logik kann ich doch nicht gleichzeitig in ein und die selbe DT etwas auslesen und reinschreiben???

    ​man sieht ja nicht die Ausgangsdaten.

    Die Ausgangsdaten hatte ich geschrieben!
    Ich bin weder ein Mathegenie noch Programmiergenie aber das der Durchschnitt von "4.5" nicht "1.5" bekomme ich noch auf die Reihe. Was ich nicht verstehe, warum das falsch berechnet wird, weil ja die anderen Werte stimmen.


    ​keine Hoffnung auf einen Lernerfolg machen

    Sorry, wenn ich nicht deinen Ansprüchen an "lerngeschwindigkeit" entspreche. Mehr als den ganzen Tag zu lernen / üben kann ich auch nicht. ;(
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Was EDR wohl sagen will ist, keiner hier kann als Lehrer fungieren, in dem Sinne, dass er für dich didaktisch die korrekte Herangehensweise auslotet.
    Ich denke was überwiegend durch den Diskurs klar wird, ist, dass der Fokus noch nicht sitzt. Aber richten können wir diesen nicht. Bzw. könnten wir schon, aber ob dir das hilft wäre fragwürdig.

    Ich denke deine Tabelle heißt "dtWeather", dann wäre die Klasse, die du brauchst dtWeatherDataTable nicht WeatherDataTable.
    Der Fehler ist aber vielleicht gar nicht mal schlecht fürs Verständnis gewesen.
    (Wenn du ein DataSet erstellst und darin eine Tabelle, dann erzeugst du automatisch eine Klasse mit Namen: "Name der Tabelle + DataTable"

    Amelie schrieb:

    das der Durchschnitt von "4.5" nicht "1.5" bekomme ich noch auf die Reihe. Was ich nicht verstehe, warum das falsch berechnet wird, weil ja die anderen Werte stimmen
    Der Schnitt von 4.5, 0 und 0 ist aber 1.5. Ich denke mal Schneetag und Regen gehören beide zur selben Tabelle? Wenn es nicht schneit muss das den Schnitt doch runterziehen oder wie sollen wir das sehen? (Referenz aus deinem LINQ: entweder Regen größer 0 oder Schneetag > 0, warum überhaupt die 0er rauslassen? Durchschnittliche Dürre wäre doch auch ein interessantes Ergebnis)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Amelie schrieb:

    New WeatherDataTable() ' ist nicht definiert
    Na, dann guck doch verdammt nochmal in deim Dataset nach, wie die WeatherDataTable richtig heisst - dtWeatherDataTable etwa? (du liebst ja diesen unnützen Prefix)



    Amelie schrieb:

    Nach meiner Logik kann ich doch nicht gleichzeitig in ein und die selbe DT etwas auslesen und reinschreiben???
    OMG!
    Informiere dich mal über die Bedeutung des Schlüsselworts New.
    Und guck nochmal den Code an:

    Amelie schrieb:

    VB.NET-Quellcode

    1. Dim dtAverageWeather As New WeatherDataTable()
    na sowas! Da kommt ja das Schlüsselwort New vor!
    Ja, aber was bedeutet das denn nun?
    Und warum ergibt nun diese Einlassung

    Amelie schrieb:

    die selbe DT
    gar keinen Sinn?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ​wie die WeatherDataTable richtig heisst

    Das steht ja im Code drin... ABER EGAL...

    Aber bei allem was ich mit dem DataTable / DataSet usw falsch mache, erklärt mir das nicht, warum bei der Berechnung des Durchschnitt die eine Spalte richtig berechnet und die andere falsch berechnet wird.

    Naja, wenn das so nicht funktioniert, "bastel" ich mir eben wieder unnützes gewusel zusammen bis es passt.

    Danke.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Ich habe nur die Daten-XML aus Post#39. Und da kommt als Auszug raus:

    Daher kann zumindest ich die Berechnung nicht nachvollziehen. Diese Anzahl = 3 und Anzahl = 1 ist auch nicht logisch, von daher liegt es nahe, dass - wie @Haudruferzappeltnoch bereits schrieb - Nullwerte verrechnet werden und dadurch sich der Durchschnitt ändert. Aber das ist Spekulation.
    Das mit der neuen Tabelle anlegen ist auf meinem Mist gewachsen, weil ich es wohl nicht eindeutig geschrieben habe: Ein Weg ist: Eine Ergebnisdatentabelle im DataSet-Designer anzulegen. Das manuelle Erstellen dieser Tabelle mittels Code ist mühsam und fehleranfällig. Daher:
    • Lösch den DataTableerstellungscode, der auf

      VB.NET-Quellcode

      1. ' Erstellen eines neuen DataTables für die Durchschnittswerte
      und

      VB.NET-Quellcode

      1. ' Hinzufügen der erforderlichen Spalten zum neuen DataTable
      folgt
    • erstell eine neue Tabelle im tDS-Designer, in der dann die Monatsergebnisse reinsollen
    • berechne die Monatsdurchschnittswerte
    • schreibe diese Daten in die im tDS-Designer angelegte
    Und vor Speichern der Daten-XML kannst Du die WErgebnisse Tabelle leeren, damit die erzeugten Ergebnisdaten nicht in der XML landen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed und die anderen ...

    Ich habe das nun alles anders gemacht damit ich das abschließen kann.
    Ist nun zum Schluss nicht mehr ganz OOP usw aber was solls.
    Letztendlich musste ich auch darauf achten, das die nun schon sehr vielen vorhandenen Datensätze in die neue Version passen.

    Komme bestimmt nochmal dazu mich mit DataSets und DataTables auseinander zu setzen.
    Danke
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: