Moin,
ich möchte einige Daten in einem DataSet speichern. Da eine Datenbank-Anbindung (SQL o.ä.) zu aufwendig wäre (Server-Betrieb etc) und so ein DataSet stand-Alone läuft ist das ganz OK.
Es handelt sich um eine Art Notiz. Ich kann in verschiedenen Feldern Einträge machen (Name, Betreff etc), einige werte werden Automatisch generiert oder per Parameter-Aufruf übergeben, z.B. Zeitpunkt und Rufnummer.
Nun gebe ich meine Daten in der Anwendung ein, fülle die Textfelder und klicke auf Speichern. Wie schaffe ich es nun, dass er mir, wenn ich noch einmal auf Speichern klicke, keine Doppelten Eintrag erzeugt, sondern den bestehenden Aktualisiert? Mein DataSet hat als Primärschlüssel eine ID. Ich vermute mal, beim erzeugen muss ich mir die Merken und dann beim Speichern angeben. Aber WIE?
Das ist meine bisherige Speichern-Routine. Die Einträge im DataSet werden in einer Listbox Ausgegeben, sodass diese im Nachhinein nochmal betrachtet, und ggf. auch bearbeitet werden können:
Oder gehe ich das ganze komplett Falsch an? Es ist tatsächlich mein erstes mal mit DataSets
ich möchte einige Daten in einem DataSet speichern. Da eine Datenbank-Anbindung (SQL o.ä.) zu aufwendig wäre (Server-Betrieb etc) und so ein DataSet stand-Alone läuft ist das ganz OK.
Es handelt sich um eine Art Notiz. Ich kann in verschiedenen Feldern Einträge machen (Name, Betreff etc), einige werte werden Automatisch generiert oder per Parameter-Aufruf übergeben, z.B. Zeitpunkt und Rufnummer.
Nun gebe ich meine Daten in der Anwendung ein, fülle die Textfelder und klicke auf Speichern. Wie schaffe ich es nun, dass er mir, wenn ich noch einmal auf Speichern klicke, keine Doppelten Eintrag erzeugt, sondern den bestehenden Aktualisiert? Mein DataSet hat als Primärschlüssel eine ID. Ich vermute mal, beim erzeugen muss ich mir die Merken und dann beim Speichern angeben. Aber WIE?
VB.NET-Quellcode
- Public Class Form1
- Private _dataPathCalls As String = "callLog.xml"
- Dim dt As DataTable
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnSave.Click
- Dim callTime As String = lblTime.Text
- Dim noteText As String = tbNote.Text
- noteText = noteText.Replace("Chr(10)", "{umbr}")
- noteText = noteText.Replace("Chr(13)", "{umbr}")
- noteText = noteText.Replace(vbCrLf, "{umbr}")
- Dim newRow = DataSet1.TblCallLog.NewRow()
- newRow(1) = tbCallID.Text
- newRow(2) = tbName.Text
- newRow(3) = callTime
- newRow(4) = tbSubject.Text
- newRow(5) = tbKDNr.Text
- newRow(6) = tbSN.Text
- newRow(7) = cbbTyp.SelectedItem
- newRow(8) = tbOrt.Text
- newRow(9) = tbTVID.Text
- newRow(10) = noteText
- dt.Rows.Add(newRow)
- End Sub
Das ist meine bisherige Speichern-Routine. Die Einträge im DataSet werden in einer Listbox Ausgegeben, sodass diese im Nachhinein nochmal betrachtet, und ggf. auch bearbeitet werden können:
VB.NET-Quellcode
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- lblVersion.Text = "V " & My.Application.Info.Version.ToString 'Version ausgeben
- Me.DataSet1.ReadXml(_dataPathCalls)
- dt = DataSet1.TblCallLog
- Dim dtCallLog As DataTable = DataSet1.TblCallLog
- ListBox1.DataSource = dtCallLog
- ListBox1.DisplayMember = "Name"
- ListBox1.ValueMember = "ID"
- End Sub
- Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
- If Not Me.CanFocus Then Return
- tbCallID.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("CallID")
- tbKDNr.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("KDNr")
- tbSN.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("SNr")
- tbOrt.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("Ort")
- tbSubject.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("Subject")
- tbName.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("Name")
- tbTVID.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("TVID")
- tbNote.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("Note")
- lblTime.Text = CType(ListBox1.SelectedItem, DataRowView).Row.Field(Of String)("Time")
- End Sub
Oder gehe ich das ganze komplett Falsch an? Es ist tatsächlich mein erstes mal mit DataSets