Benutzer mit den meisten Antworten
Textboxen nutzen um Datenbank zu editieren / füllen

Frage
-
Hallo, ich hoffe ihr könnt mir weiterhelfen. MSDN und diverse Foren verwirren mich gerade sehr.
Anscheinend stehe ich auf dem Schlauch. Ich habe eine lokale Datenbank angelegt ("database.mdf"). Dieser habe ich eine Tabelle ("daten") mit 6 Spalten (eine davon (ID) mit Primary Key) verpasst.
Zur Laufzeit wird diese Datenbank abgerufen und mittels Datagridview dem Nutzer gezeigt. Dieser soll mittels Textboxen Einträge hinzufügen und editieren können. Dafür habe ich entsprechende Textboxen (ohne Bindings) angelegt.
Wenn ich in die Textboxen Daten eingebe und den entsprechenden Button drücke aktualisiert das Datagridview sich, aber bei einem Neustart sind die eingegebenen Daten weg.
Wie bekomme ich die Daten permanent/persistent in die database.mdf - daten? Mein Code:
Private Sub NewEntry() Dim newCompRow As DataRow = SendToDataSet.Tables("Table").NewRow() Dim ID As Integer = TableDataGridView.Rows.Count newCompRow("ID") = ID newCompRow("Firma") = tb_fa.Text newCompRow("Empfänger") = tb_emp.Text newCompRow("Straße") = tb_str.Text newCompRow("PLZ") = tb_plz.Text newCompRow("Ort") = tb_ort.Text SendToDataSet.Tables("Table").Rows.Add(newCompRow) End Sub
Ich hoffe ihr könnt mir helfen! MfG. Dennis.
Antworten
-
Hallo dkarts,
wir haben ja hier nicht den kompletten Code gesehen.
Hast Du irgendwo ein Update gemacht?
Abhängig von der Art des verwendeten Dataset-Types (typisiert, oder untypisiert),
musst Du Die Updatemethode des Table- oder Data-Adapters aufrufen.
Grüße
Roland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 27. Januar 2016 08:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 3. Februar 2016 09:56
-
Hi,
irgendwo in Deinem Code muss ein Update ausgeführt werden. Das Update prüft alle Datensätze und wenn es Datensätze finden, die keinen RowState=unchanged haben, wird für den jeweiligen Datensatz Update, Delete oder Insert ausgeführt. Standardmäßig impliziert das DataAdapter.Update (oder TableAdapter.Update) ein AcceptChanges für den betreffenden Datensatz nach der erfolgreichen Bearbeitung des Datensatzes. Danach hat der Datensatz den RowState=unchanged. Wenn Du selbst explizit ein AcceptChanges auf das gesamte DataSet ausführst, werden alle Änderungen als "abgelegt" markiert, d.h. alle Datensätze bekommen den RowState=unchanged. Ein nachfolgendes DataAdapter.Update führt dann nichts aus, weil es keine geänderten Datensätze mehr findet. Auch das könnte eine Ursache für deine Probleme sein.Solange sich die Datenbank im Projektordner befindet und mit always copy gekennzeichnet ist, wird bei jedem Start Debug diese in das Ausführungsverzeichnis kopiert und damit werden vorherige Änderungen überschrieben.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 27. Januar 2016 08:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 3. Februar 2016 09:56
Alle Antworten
-
Hi,
ich vermute, Du hast in der Entwicklungsumgebung getestet und lässt bei jeden Programmstart die Datenbank kopieren, so dass die vorherigen Änderungen überschrieben werden. Bitte prüfe das mal.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Bearbeitet Peter Fleischer Freitag, 22. Januar 2016 03:05
-
Hi David,
genau das AcceptChanges führt dazu, dass die Daten als ungeändert markiert werden und beim nachfolgendem Update nichts in die Datenbank geschrieben wird.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Bearbeitet Peter Fleischer Freitag, 22. Januar 2016 09:23
-
Hallo Peter, Hallo David!
Vielen Dank für eure bisherige Hilfe.
Peter, mit deiner Vermutung hinsichtlich der Umgebung liegst du richtig. Wie kann ich prüfen ob die Daten bei jedem Start überschrieben werden? Letzlich soll unabhägig ob Debug oder Release die Tabelle in der Datenbank bei Änderungen Schreiben/Ändern/Löschen aktualisiert werden.
David, ja das SendToDataSet ist ein DataSet :D.
SendToDataSet.AcceptChanges()
wird problemlos ohne Exception durchlaufen. Problematik besteht leider immer noch. Unabhängig ob Releaser oder Debug. :(
-
Hallo dkarts,
wir haben ja hier nicht den kompletten Code gesehen.
Hast Du irgendwo ein Update gemacht?
Abhängig von der Art des verwendeten Dataset-Types (typisiert, oder untypisiert),
musst Du Die Updatemethode des Table- oder Data-Adapters aufrufen.
Grüße
Roland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 27. Januar 2016 08:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 3. Februar 2016 09:56
-
Hallo dkarts,
lege die Datenbank in eine separates Verzeichnis. Ändere die DB mittels Management Studio oder im VS direkt. Verweise im Connection String auf die DB.
Gruß,
Dominik
C# und VB.NET sind wie eine Schachtel Pralinen, ich weiß nie was ich bekomme xD
-
Hi,
irgendwo in Deinem Code muss ein Update ausgeführt werden. Das Update prüft alle Datensätze und wenn es Datensätze finden, die keinen RowState=unchanged haben, wird für den jeweiligen Datensatz Update, Delete oder Insert ausgeführt. Standardmäßig impliziert das DataAdapter.Update (oder TableAdapter.Update) ein AcceptChanges für den betreffenden Datensatz nach der erfolgreichen Bearbeitung des Datensatzes. Danach hat der Datensatz den RowState=unchanged. Wenn Du selbst explizit ein AcceptChanges auf das gesamte DataSet ausführst, werden alle Änderungen als "abgelegt" markiert, d.h. alle Datensätze bekommen den RowState=unchanged. Ein nachfolgendes DataAdapter.Update führt dann nichts aus, weil es keine geänderten Datensätze mehr findet. Auch das könnte eine Ursache für deine Probleme sein.Solange sich die Datenbank im Projektordner befindet und mit always copy gekennzeichnet ist, wird bei jedem Start Debug diese in das Ausführungsverzeichnis kopiert und damit werden vorherige Änderungen überschrieben.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 27. Januar 2016 08:19
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 3. Februar 2016 09:56