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:
Klasse 2:
Das MainForm:
*Topic verschoben*
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.
Die Klasse:
VB.NET-Quellcode
- Public Class XmlManager
- Private _varsconst As New VarsConst
- Public Event XMLRead As EventHandler(Of DataTable)
- Public Event XMLSave As EventHandler
- Public Sub LoadXMLData(monthfile As String, dtWetterdaten As DataTable)
- Dim newfilePath = Path.Combine(CStr(_varsconst.filePath), monthfile)
- Debug.WriteLine(newfilePath)
- Try
- Dim xmlData As New DataSet()
- xmlData.ReadXml(newfilePath)
- dtWetterdaten = xmlData.Tables(0)
- 'Debug.WriteLine("Lesen" & xmlData.GetXml())
- RaiseEvent XMLRead(Me, dtWetterdaten) ' Event auslösen
- Catch ex As Exception
- MessageBox.Show("Fehler beim Laden der XML-Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
- Debug.WriteLine("Fehler beim Laden der XML-Daten: " & ex.Message)
- Debug.WriteLine("Details: " & ex.StackTrace)
- End Try
- End Sub
- Public Sub SaveXMLFile(monthfile As String, dtWetterdaten As DataTable)
- Dim newfilePath = Path.Combine(CStr(_varsconst.filePath), monthfile)
- Try
- Debug.WriteLine("Anzahl der Zeilen in Wetterdaten: " & dtWetterdaten.Rows.Count)
- Debug.WriteLine("Anzahl der Spalten in Wetterdaten: " & dtWetterdaten.Columns.Count)
- Debug.WriteLine("Dateipfad: " & newfilePath)
- Dim xmlData As New DataSet()
- xmlData.Tables.Add(dtWetterdaten.Copy())
- Debug.WriteLine("Schreiben" & xmlData.GetXml())
- xmlData.WriteXml(newfilePath)
- RaiseEvent XMLSave(Me, EventArgs.Empty) ' Event auslösen
- Debug.WriteLine("XML-Datei erfolgreich gespeichert: " & newfilePath)
- Catch ex As Exception
- MessageBox.Show("Fehler beim Speichern: " & ex.Message, "XML-Datei-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
- Debug.WriteLine("Fehler beim Speichern der XML-Datei: " & ex.Message)
- End Try
- End Sub
- End Class
Klasse 2:
Das MainForm:
VB.NET-Quellcode
- Public Class frmMain
- Private WithEvents _varsconst As New VarsConst()
- Private WithEvents _xmlManager As New XmlManager()
- Private dtWetterdaten As New DataTable()
- Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- ChangeMonth()
- End Sub
- Private Sub ChangeMonth()
- ToollblAktlMonth.Text = dtpDatum.Value.ToString("MMMM-yyyy")
- _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
- _xmlManager.LoadXMLData(_varsconst.NameMonth & _varsconst.Präfix, dtWetterdaten)
- End Sub
- ' Evendhandler Daten einlesen
- Private Sub XMLReadHandler(sender As Object, e As DataTable) Handles _xmlManager.XMLRead
- WeatherGridView.Refresh()
- dtWetterdaten = e
- WeatherGridView.DataSource = dtWetterdaten.DefaultView
- WeatherGridView.Columns(0).ReadOnly = True
- WeatherGridView.AllowUserToAddRows = False
- End Sub
- ' Eventhandler Daten speichern
- Private Sub XMLSaveHandler(sender As Object, e As EventArgs) Handles _xmlManager.XMLSave
- MessageBox.Show("Daten erfolgreich gespeichert. ", "XML-Datei-Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End Sub
- ' DateTimePicker
- Private Sub dtpDatum_ValueChanged(sender As Object, e As EventArgs) Handles dtpDatum.ValueChanged
- _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
- ToollblAktlMonth.Text = dtpDatum.Value.ToString("MMMM-yyyy")
- End Sub
- ' Button zum Einstellen des Datums um einen Monat zurück
- Private Sub btnPrevMonth_Click(sender As Object, e As EventArgs) Handles btnPrevMonth.Click
- dtpDatum.Value = dtpDatum.Value.AddMonths(-1)
- ChangeMonth()
- End Sub
- ' Button zum Einstellen des Datums um einen Monat nach vorne
- Private Sub btnNextMonth_Click(sender As Object, e As EventArgs) Handles btnNextMonth.Click
- dtpDatum.Value = dtpDatum.Value.AddMonths(1)
- ChangeMonth()
- End Sub
- ' Button zum Speichern der Änderungen
- Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
- _varsconst.NameMonth = dtpDatum.Value.ToString("MM-yyyy")
- _xmlManager.SaveXMLFile(_varsconst.NameMonth & _varsconst.Präfix, dtWetterdaten)
- End Sub
- End Class
*Topic verschoben*
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()