Seltsames verhalten beim speichern von XML / DataSet / DataTable

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

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

    Seltsames verhalten beim speichern von XML / DataSet / DataTable

    Hallo und moin

    Probleme beim Umbau der WetterApp.
    Ich habe hier ein Problem mit dem ich mich jetzt schon ewig herumschlage ohne auch nur weiter zu kommen.

    Habe das DataSet/DataTable mit dem Designer erstellt, dann aus dem Bereich "Datenquellen" das DGV auf das Form gezogen.
    Die Daten aus den XML-Dateien werden richtig angezeigt. Das "blättern" der Monate funktioniert auch, also werden immer die richtigen XML-Dateien aus dem Verzeichnis geladen.
    Beispiel: "A:\Wetterdaten\06-2023.xml" ... 05-2023.xml usw...

    Wenn ich nun im DGV eiige Werte in den Zellen ändere, kommt dieses seltsame verhalten, das nicht jede Zelle / Reihe mit den neuen Werten gespeichert wird.
    Gut zu sehen im Bild "datatable2"
    Das seltsame ist auch, das bei jedem speichern andere Zellen überschrieben oder eben nicht überschrieben werden!
    Ich habe in allen Zellen diese "xxxxx" zum speichern eingegeben!

    Ich habe mir alles Erdenkliche mit dem Debuger ausgeben lassen aber ich finde den Fehler nicht.
    Verstehe auch nicht dieses seltsame Verhalten beim speichern.
    Hoffe mir kann jemand helfen.

    Spoiler anzeigen

    Die Klasse:

    VB.NET-Quellcode

    1. Public Class XmlManager
    2. Private _varsconst As New VarsConst
    3. Public Event XMLRead As EventHandler(Of DataTable)
    4. Public Event XMLSave As EventHandler
    5. Public Sub LoadXMLData(monthfile As String, dtWetterdaten As DataTable)
    6. Dim newfilePath = Path.Combine(CStr(_varsconst.filePath), monthfile)
    7. Debug.WriteLine(newfilePath)
    8. Try
    9. Dim xmlData As New DataSet()
    10. xmlData.ReadXml(newfilePath)
    11. dtWetterdaten = xmlData.Tables(0)
    12. 'Debug.WriteLine("Lesen" & xmlData.GetXml())
    13. RaiseEvent XMLRead(Me, dtWetterdaten) ' Event auslösen
    14. Catch ex As Exception
    15. MessageBox.Show("Fehler beim Laden der XML-Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    16. Debug.WriteLine("Fehler beim Laden der XML-Daten: " & ex.Message)
    17. Debug.WriteLine("Details: " & ex.StackTrace)
    18. End Try
    19. End Sub
    20. Public Sub SaveXMLFile(monthfile As String, dtWetterdaten As DataTable)
    21. Dim newfilePath = Path.Combine(CStr(_varsconst.filePath), monthfile)
    22. Try
    23. Debug.WriteLine("Anzahl der Zeilen in Wetterdaten: " & dtWetterdaten.Rows.Count)
    24. Debug.WriteLine("Anzahl der Spalten in Wetterdaten: " & dtWetterdaten.Columns.Count)
    25. Debug.WriteLine("Dateipfad: " & newfilePath)
    26. Dim xmlData As New DataSet()
    27. xmlData.Tables.Add(dtWetterdaten.Copy())
    28. Debug.WriteLine("Schreiben" & xmlData.GetXml())
    29. xmlData.WriteXml(newfilePath)
    30. RaiseEvent XMLSave(Me, EventArgs.Empty) ' Event auslösen
    31. Debug.WriteLine("XML-Datei erfolgreich gespeichert: " & newfilePath)
    32. Catch ex As Exception
    33. MessageBox.Show("Fehler beim Speichern: " & ex.Message, "XML-Datei-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    34. Debug.WriteLine("Fehler beim Speichern der XML-Datei: " & ex.Message)
    35. End Try
    36. End Sub
    37. End Class


    Klasse 2:

    VB.NET-Quellcode

    1. Public Class VarsConst
    2. Public ReadOnly filePath As String = "A:\Wetterdaten"
    3. Public ReadOnly programmpath As String = "C:\WetterApp"
    4. Public ReadOnly Backuppath As String = "WetterbackUp"
    5. Public ReadOnly Präfix As String = ".xml"
    6. Public Property NameMonth As String
    7. End Class


    Das MainForm:

    VB.NET-Quellcode

    1. Public Class frmMain
    2. Private WithEvents _varsconst As New VarsConst()
    3. Private WithEvents _xmlManager As New XmlManager()
    4. Private dtWetterdaten As New DataTable()
    5. Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. ChangeMonth()
    7. End Sub
    8. Private Sub ChangeMonth()
    9. ToollblAktlMonth.Text = dtpDatum.Value.ToString("MMMM-yyyy")
    10. _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
    11. _xmlManager.LoadXMLData(_varsconst.NameMonth & _varsconst.Präfix, dtWetterdaten)
    12. End Sub
    13. ' Evendhandler Daten einlesen
    14. Private Sub XMLReadHandler(sender As Object, e As DataTable) Handles _xmlManager.XMLRead
    15. WeatherGridView.Refresh()
    16. dtWetterdaten = e
    17. WeatherGridView.DataSource = dtWetterdaten.DefaultView
    18. WeatherGridView.Columns(0).ReadOnly = True
    19. WeatherGridView.AllowUserToAddRows = False
    20. End Sub
    21. ' Eventhandler Daten speichern
    22. Private Sub XMLSaveHandler(sender As Object, e As EventArgs) Handles _xmlManager.XMLSave
    23. MessageBox.Show("Daten erfolgreich gespeichert. ", "XML-Datei-Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
    24. End Sub
    25. ' DateTimePicker
    26. Private Sub dtpDatum_ValueChanged(sender As Object, e As EventArgs) Handles dtpDatum.ValueChanged
    27. _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
    28. ToollblAktlMonth.Text = dtpDatum.Value.ToString("MMMM-yyyy")
    29. End Sub
    30. ' Button zum Einstellen des Datums um einen Monat zurück
    31. Private Sub btnPrevMonth_Click(sender As Object, e As EventArgs) Handles btnPrevMonth.Click
    32. dtpDatum.Value = dtpDatum.Value.AddMonths(-1)
    33. ChangeMonth()
    34. End Sub
    35. ' Button zum Einstellen des Datums um einen Monat nach vorne
    36. Private Sub btnNextMonth_Click(sender As Object, e As EventArgs) Handles btnNextMonth.Click
    37. dtpDatum.Value = dtpDatum.Value.AddMonths(1)
    38. ChangeMonth()
    39. End Sub
    40. ' Button zum Speichern der Änderungen
    41. Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    42. _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
    43. _xmlManager.SaveXMLFile(_varsconst.NameMonth & _varsconst.Präfix, dtWetterdaten)
    44. End Sub
    45. End Class


    *Topic verschoben*
    Bilder
    • datatable.jpg

      241,08 kB, 504×694, 82 mal angesehen
    • datatable2.jpg

      893,06 kB, 1.099×918, 90 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hast Du Dir mal den Inhalt der DataTable beim Speichern mit SaveXMLFile angeschaut?

    VB.NET-Quellcode

    1. ​For Each row As DataRow In dtWetterdaten.Rows
    2. Debug.Print("------------------------------------------")
    3. For Each col As DataColumn In results.Columns
    4. Debug.Write(col.ColumnName)
    5. Debug.Write("=")
    6. Debug.WriteLine(row(col.ColumnName))
    7. Next
    8. Next
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Moin moin

    Das lasse ich mir doch hier mit ausgeben.

    VB.NET-Quellcode

    1. Debug.WriteLine("Schreiben" & xmlData.GetXml())


    Dein Code bring mir :

    XML-Quellcode

    1. Der Thread 0x1288 hat mit Code 259 (0x103) geendet.
    2. A:\Wetterdaten\06-2023.xml
    3. Anzahl der Zeilen in Wetterdaten: 60
    4. Anzahl der Spalten in Wetterdaten: 14
    5. Dateipfad: A:\Wetterdaten\06-2023.xml
    6. ------------------------------------------
    7. Datum=01-06-2023
    8. WetterTag=fffff
    9. WetterNacht=yyyy [b][color=#0000FF]<<<<<<<<<<<<<Hier hatte ich etwas neues eingegeben...[/color][/b]
    10. RegenTag=1.2
    11. SchneeTag=3
    12. SchneeNacht=3
    13. LuftfminTag=2,4
    14. LuftfmaxTag=5.6
    15. LuftfminNacht=46
    16. LuftfmaxNacht=3
    17. TempTag=3.3
    18. TempNacht=8
    19. WindTag=6
    20. WindNacht=3
    21. ------------------------------------------
    22. Datum=02-06-2023
    23. WetterTag=ffff
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Habe den Prüfcode nochmal angepasst. Es kommt nicht das an was soll. Ratlos bin.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub SaveXMLFile(monthfile As String, dtWetterdaten As DataTable)
    2. Dim newfilePath = Path.Combine(CStr(_varsconst.filePath), monthfile)
    3. Try
    4. Debug.WriteLine("Anzahl der Zeilen in Wetterdaten: " & dtWetterdaten.Rows.Count)
    5. Debug.WriteLine("Anzahl der Spalten in Wetterdaten: " & dtWetterdaten.Columns.Count)
    6. Debug.WriteLine("Dateipfad: " & newfilePath)
    7. Dim xmlData As New DataSet()
    8. xmlData.Tables.Add(dtWetterdaten.Copy())
    9. ' Überprüfung, ob Daten in dtWetterdaten vorhanden sind
    10. If dtWetterdaten.Rows.Count > 0 Then
    11. For Each row As DataRow In dtWetterdaten.Rows
    12. Debug.Print("------------------------------------------")
    13. For Each col As DataColumn In dtWetterdaten.Columns
    14. Debug.Write(col.ColumnName)
    15. Debug.Write("=")
    16. Debug.WriteLine(row(col.ColumnName))
    17. Next
    18. Next
    19. Else
    20. Debug.WriteLine("Keine Daten in dtWetterdaten vorhanden.")
    21. End If
    22. Debug.WriteLine("Schreiben" & xmlData.GetXml())
    23. xmlData.WriteXml(newfilePath)
    24. RaiseEvent XMLSave(Me, EventArgs.Empty) ' Event auslösen
    25. Debug.WriteLine("XML-Datei erfolgreich gespeichert: " & newfilePath)
    26. Catch ex As Exception
    27. MessageBox.Show("Fehler beim Speichern: " & ex.Message, "XML-Datei-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    28. Debug.WriteLine("Fehler beim Speichern der XML-Datei: " & ex.Message)
    29. End Try
    30. End Sub



    Debug Ausgabe: In allen Zellen "Wetter..." im DGV "nnnn" eingegeben!

    XML-Quellcode

    1. Der Thread 0x1124 hat mit Code 259 (0x103) geendet.
    2. A:\Wetterdaten\06-2023.xml
    3. Anzahl der Zeilen in Wetterdaten: 60
    4. Anzahl der Spalten in Wetterdaten: 14
    5. Dateipfad: A:\Wetterdaten\06-2023.xml
    6. ------------------------------------------
    7. Datum=01-06-2023
    8. WetterTag=fffff
    9. WetterNacht=nnnn
    10. RegenTag=1.2
    11. SchneeTag=3
    12. SchneeNacht=3
    13. LuftfminTag=2,4
    14. LuftfmaxTag=5.6
    15. LuftfminNacht=46
    16. LuftfmaxNacht=3
    17. TempTag=3.3
    18. TempNacht=8
    19. WindTag=6
    20. WindNacht=3
    21. ------------------------------------------
    22. Datum=02-06-2023
    23. WetterTag=nnnn
    24. WetterNacht=nnnn
    25. RegenTag=23.6
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Du suchst an der falschen Stelle.
    Ich glaube nicht das das Problem im XmlManager liegt.
    Schaue Dier bitte mal an was das DataGridView WeatherGridView im Formular macht.
    Es scheint mir die Daten nicht oder falsch an die Datatable dtWetterdaten bei der Änderung zu übergeben.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    probierma

    VB.NET-Quellcode

    1. ' Button zum Speichern der Änderungen
    2. Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    3. WeatherGridView.EndEdit
    4. _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
    5. _xmlManager.SaveXMLFile(_varsconst.NameMonth & _varsconst.Präfix, dtWetterdaten)
    6. End Sub
    Moin moin

    @ErfinderDesRades
    @INOPIAE

    Es gab da wohl irgendwie größere Probleme mit dem Dataset/DataTable und der Anbindung an das Bindingsource. ;(

    Habe den Umbau, nach einigem erneutem Lesen über DS/DT und Binding nun komplett neu begonnen.
    Die ganzen Fehleranzeigen des Debugers sind weg und das Lesen/Speichern klappt nun nach ersten Test ganz gut.

    Ich habe das DataSet hinzugefügt und dann im Designer das DataTable erstellt und anschließend auf das Form gezogen.
    Ich hoffe, das es nun so leichter / einfacher wird, die Daten dann grafisch in Charts darzustellen?? ?(
    Nachtrag: Jetzt werden auch die richtigen TAGs aus der XML-Datei angezeigt. ;)

    Debug Ausgaben:
    Spoiler anzeigen

    XML-Quellcode

    1. Der Thread 0x1218 hat mit Code 259 (0x103) geendet.
    2. Der Thread 0x1144 hat mit Code 259 (0x103) geendet.
    3. Der Thread 0x8fc hat mit Code 0 (0x0) geendet.
    4. Der Thread 0x1304 hat mit Code 259 (0x103) geendet.
    5. XML-Dateiname/Pfad: A:\Wetterdaten\06-2023.xml
    6. DataTable: WeatherData
    7. Inhalt gekürzt Lesen: WeatherData>
    8. <WeatherData>
    9. <Datum>01-06-2023</Datum>
    10. <WetterTag>K/LB/R</WetterTag>
    11. <WetterNacht>RS/R/SB</WetterNacht>
    12. <RegenTag>2</RegenTag>
    13. <SchneeTag>5</SchneeTag>
    14. <SchneeNacht>3.4</SchneeNacht>
    15. <LuftfminTag>23</LuftfminTag>
    16. <LuftfmaxTag>23</LuftfmaxTag>
    17. <LuftfminNacht>33</LuftfminNacht>
    18. <LuftfmaxNacht>44</LuftfmaxNacht>
    19. <TempTag>23</TempTag>
    20. <TempNacht>12</TempNacht>
    21. <WindTag>2</WindTag>
    22. <WindNacht>3</WindNacht>
    23. </WeatherData>
    24. XML-Dateiname/Pfad: A:\Wetterdaten\06-2023.xml
    25. XML-Daten erfolgreich gespeichert.
    26. DataTable: WeatherData
    27. Inhalt gekürzt Speichern: WeatherData>
    28. <WeatherData>
    29. <Datum>01-06-2023</Datum>
    30. <WetterTag>K/LB/R/NR</WetterTag>
    31. <WetterNacht>RS/R/SB/R</WetterNacht>
    32. <RegenTag>2</RegenTag>
    33. <SchneeTag>5</SchneeTag>
    34. <SchneeNacht>3.4</SchneeNacht>
    35. <LuftfminTag>23</LuftfminTag>
    36. <LuftfmaxTag>23</LuftfmaxTag>
    37. <LuftfminNacht>33</LuftfminNacht>
    38. <LuftfmaxNacht>44</LuftfmaxNacht>
    39. <TempTag>23</TempTag>
    40. <TempNacht>12</TempNacht>
    41. <WindTag>2</WindTag>
    42. <WindNacht>3</WindNacht>
    43. </WeatherData>



    Klasse und Form:
    Spoiler anzeigen

    Die Klasse:

    VB.NET-Quellcode

    1. Public Class XmlManager
    2. ' Event, das bei einem XML-Datei Fehler ausgelöst wird
    3. Public Event XMLError As EventHandler(Of String)
    4. ' Event, das bei erfolgreichem Lesen der XML-Daten ausgelöst wird
    5. Public Event XMLRead As EventHandler(Of DataTable)
    6. ' Event, das bei erfolgreichem Speichern der XML-Daten ausgelöst wird
    7. Public Event XMLSave As EventHandler
    8. ' DataSet und DataTables für die Verwaltung der XML-Daten.
    9. ' DataSet zur Speicherung der XML-Daten.
    10. Public dsWeather As New DataSet
    11. ' DataTable zur Speicherung der Wetterdaten.
    12. Public dtWeatherData As New DataTable
    13. ' DataTable zur Speicherung der Jahresdaten.
    14. Public dtYearData As New DataTable
    15. ''' <summary>
    16. ''' Lädt die XML-Daten aus der angegebenen Datei.
    17. ''' </summary>
    18. ''' <param name="monthfile">Der Dateipfad der XML-Datei.</param>
    19. Public Sub LoadXMLData(monthfile As String)
    20. If File.Exists(monthfile) Then
    21. Try
    22. Debug.WriteLine("XML-Dateiname/Pfad: " & monthfile)
    23. dsWeather.Clear()
    24. dsWeather.ReadXml(monthfile)
    25. If dsWeather.Tables.Count > 0 Then
    26. dtWeatherData = dsWeather.Tables(0)
    27. ' Zum Testen: Den gekürzten Inhalt des ersten <WeatherData>-Tags ausgeben
    28. Dim tableName As String = dsWeather.Tables(0).TableName
    29. Debug.WriteLine("DataTable: " & tableName)
    30. Dim xmlContent As String = dsWeather.GetXml()
    31. Dim startIndex As Integer = xmlContent.IndexOf(tableName)
    32. Dim endIndex As Integer = xmlContent.IndexOf("</WeatherData>", startIndex) + "</WeatherData>".Length
    33. If startIndex >= 0 AndAlso endIndex > startIndex Then
    34. Dim limitedContent As String = xmlContent.Substring(startIndex, endIndex - startIndex)
    35. Debug.WriteLine("Inhalt gekürzt Lesen: " & limitedContent)
    36. Else
    37. Debug.WriteLine("Der XML-Inhalt enthält keinen gültigen Eintrag.")
    38. End If
    39. ' Test Ende
    40. Else
    41. Debug.WriteLine("Die XML-Datei enthält keine Daten.")
    42. End If
    43. RaiseEvent XMLRead(Me, dtWeatherData)
    44. Catch ex As Exception
    45. RaiseEvent XMLError(Me, ex.Message)
    46. Debug.WriteLine("Fehler beim Laden der XML-Daten: " & ex.Message)
    47. Debug.WriteLine("Details: " & ex.StackTrace)
    48. End Try
    49. End If
    50. End Sub
    51. ''' <summary>
    52. ''' Speichert die XML-Daten in der angegebenen Datei.
    53. ''' </summary>
    54. ''' <param name="monthfile">Der Dateipfad, in dem die XML-Daten gespeichert werden sollen.</param>
    55. Public Sub SaveXMLData(monthfile As String)
    56. If File.Exists(monthfile) Then
    57. Try
    58. Debug.WriteLine("XML-Dateiname/Pfad: " & monthfile)
    59. dsWeather.WriteXml(monthfile)
    60. Debug.WriteLine("XML-Daten erfolgreich gespeichert.")
    61. RaiseEvent XMLSave(Me, EventArgs.Empty)
    62. ' Zum Testen: Den gekürzten Inhalt des ersten <WeatherData>-Tags ausgeben
    63. Dim tableName As String = dsWeather.Tables(0).TableName
    64. Debug.WriteLine("DataTable: " & tableName)
    65. Dim xmlContent As String = dsWeather.GetXml()
    66. Dim startIndex As Integer = xmlContent.IndexOf(tableName)
    67. Dim endIndex As Integer = xmlContent.IndexOf("</WeatherData>", startIndex) + "</WeatherData>".Length
    68. If startIndex >= 0 AndAlso endIndex > startIndex Then
    69. Dim limitedContent As String = xmlContent.Substring(startIndex, endIndex - startIndex)
    70. Debug.WriteLine("Inhalt gekürzt Speichern: " & limitedContent)
    71. Else
    72. Debug.WriteLine("Der XML-Inhalt enthält keinen gültigen Eintrag.")
    73. End If
    74. ' Test Ende
    75. Catch ex As Exception
    76. RaiseEvent XMLError(Me, ex.Message)
    77. Debug.WriteLine("Fehler beim Speichern der XML-Datei: " & ex.Message)
    78. End Try
    79. End If
    80. End Sub
    81. End Class


    2teKlass

    VB.NET-Quellcode

    1. Public Class FilePathsConfig
    2. ''' <summary>
    3. ''' Der Pfad zum Verzeichnis der Wetter-App.
    4. ''' </summary>
    5. Public ReadOnly AppDirectory As String = "C:\WetterApp"
    6. ''' <summary>
    7. ''' Der Pfad zum Verzeichnis für Wetter-Backups.
    8. ''' </summary>
    9. Public ReadOnly BackupDirectory As String = "WetterbackUp"
    10. ''' <summary>
    11. ''' Der Basispfad für die Wetterdaten-Dateien.
    12. ''' </summary>
    13. Public ReadOnly filePath As String = "A:\Wetterdaten\"
    14. ''' <summary>
    15. ''' Der Suffix für die Wetterdaten-Dateien.
    16. ''' </summary>
    17. Public Property fileSufix As String
    18. ''' <summary>
    19. ''' Der Präfix für die Wetterdaten-Dateien.
    20. ''' </summary>
    21. Public ReadOnly filePräfix As String = ".xml"
    22. ''' <summary>
    23. ''' Der vollständige Pfad zur XML-Datei der Wetterdaten.
    24. ''' </summary>
    25. Public ReadOnly Property XMLFileName As String
    26. Get
    27. Return Path.Combine(filePath, fileSufix & filePräfix)
    28. End Get
    29. End Property
    30. End Class


    Das MainForm:

    VB.NET-Quellcode

    1. Public Class frmMain
    2. Public WithEvents _varsConst As New FilePathsConfig
    3. Public WithEvents _xmlManager As New XmlManager
    4. Public Sub New()
    5. InitializeComponent()
    6. _varsConst.fileSufix = dtpDatum.Value.ToString("MM-yyyy")
    7. _xmlManager.LoadXMLData(_varsConst.XMLFileName)
    8. 'Debug.WriteLine("FormSubNew: " & _varsConst.XMLFileName)
    9. End Sub
    10. Private Sub Loadxml()
    11. 'Debug.WriteLine("FormLoadXML: " & _varsConst.XMLFileName)
    12. _xmlManager.LoadXMLData(_varsConst.XMLFileName)
    13. End Sub
    14. ' DateTimePicker
    15. Private Sub dtpDatum_ValueChanged(sender As Object, e As EventArgs) Handles dtpDatum.ValueChanged
    16. _varsConst.fileSufix = dtpDatum.Value.ToString("MM-yyyy")
    17. 'ToollblAktlMonth.Text = dtpDatum.Value.ToString("MMMM-yyyy")
    18. End Sub
    19. ' Button zum Einstellen des Datums um einen Monat zurück
    20. Private Sub btnPrevMonth_Click(sender As Object, e As EventArgs) Handles btnPrevMonth.Click
    21. dtpDatum.Value = dtpDatum.Value.AddMonths(-1)
    22. Loadxml()
    23. 'Debug.WriteLine("FormPrevMo: " & _varsConst.XMLFileName)
    24. End Sub
    25. ' Button zum Einstellen des Datums um einen Monat nach vorne
    26. Private Sub btnNextMonth_Click(sender As Object, e As EventArgs) Handles btnNextMonth.Click
    27. dtpDatum.Value = dtpDatum.Value.AddMonths(1)
    28. Loadxml()
    29. 'Debug.WriteLine("FormNextMo: " & _varsConst.XMLFileName)
    30. End Sub
    31. ' Button zum Speichern des aktl. Monat
    32. Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    33. _xmlManager.SaveXMLData(_varsConst.XMLFileName)
    34. End Sub
    35. ' Evendhandler Daten in das DGV einlesen
    36. Private Sub XMLReadHandler(sender As Object, e As DataTable) Handles _xmlManager.XMLRead
    37. WeatherGridView.Refresh()
    38. _xmlManager.dtWeatherData = e
    39. WeatherGridView.DataSource = _xmlManager.dtWeatherData.DefaultView
    40. WeatherGridView.Columns(0).ReadOnly = True
    41. WeatherGridView.AllowUserToAddRows = False
    42. End Sub
    43. ' Eventhandler Daten Speichern
    44. Private Sub XMLSaveHandler(sender As Object, e As Object) Handles _xmlManager.XMLSave
    45. MessageBox.Show("Die Monatsdaten wurden erfolgreich gespeichert." & Environment.NewLine & "Datei: " & _varsConst.XMLFileName, "XML-Datei-Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
    46. End Sub
    47. ' Eventhandler Daten Lesen / Speicher Fehler
    48. Private Sub XMLErrorHandler(sender As Object, message As String) Handles _xmlManager.XMLError
    49. MessageBox.Show("Fehler beim Lesen / Speichern der XML-Datei: " & Environment.NewLine & message, "XML-Datei-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    50. End Sub
    51. End Class

    Bilder
    • mainform1.jpg

      241,02 kB, 842×410, 83 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: