Benutzer mit den meisten Antworten
Dataset in Datenbank speichern

Frage
-
Also zuerstmal, ich bin absoluter Neueinsteiger in VB.Net, Hab aber vorher schon Windows-Programme geschrieben.
Mein Problem:
Ich kämpfe mich also momentan durch die Hilfe und Versuche eine kleine Anwendung auf die Beine zu stellen, mit der ich in eine Adress-Tabelle Datensätze eintragen, bearbeiten oder löschen kann. Also ne ganz einfache Datenbankanwendung.
Mit dem Dataset komme ich soweit schon ganz gut klar, aber das zurückschrteiben in die Datenbank will mir einfach nicht gelingen.
Nachdem, was ich in der Hilfe gefunden habe, müsste es ja so funktionieren um einen bearbeiteten Datensatz in der DB zu aktualisieren.
Me
.KontaktBindingSource.EndEdit() Me.KontaktTableAdapter.Update(Me.DataSet1.Kontakt)Im Datagrid wird mir die Änderung angezeigt, also im Dataset ist die Änderung. Aber nach dem Beenden der Anwendung und dem Neustart sind wieder die ursprünglichen Daten im Dataset.
Woran kann das liegen?
Wie kann ich überprüfen, ob alles richtig eingestellt ist. Vielleicht ist es nur ne einstellungssache der Komponenten.
Danke im Vorraus.
Antworten
-
Ich habe bei mir das Problem nun gelöst. Bei mir ging das nachdem ich im Projektmappen-Explorer auf die Datenbank Eigenschaften ging und dort bei "In Ausgabeverzeichnis kopieren" die Einstellung auf "Kopieren, wenn neuer" gesetzt habe.
Ich hoffe ich konnte euch damit helfen.
- Als Antwort markiert Thorsten Dörfler Samstag, 17. Juli 2010 21:41
Alle Antworten
-
Wie ich die Sache so sehe, ist die MSDN Community wohl doch nicht so hilfreich wie gedacht. Das Problem ist ja eigentlich ne Grundlagen Frage. Und da kann uns schon keiner helfen. Was soll das dann bei komplizierteren Sachen werden? Also bei Borland hat das besser funktioniert.
Naja, vielleicht hat ja doch noch jemand Lust uns zu antworten.
-
Ich habe bei mir das Problem nun gelöst. Bei mir ging das nachdem ich im Projektmappen-Explorer auf die Datenbank Eigenschaften ging und dort bei "In Ausgabeverzeichnis kopieren" die Einstellung auf "Kopieren, wenn neuer" gesetzt habe.
Ich hoffe ich konnte euch damit helfen.
- Als Antwort markiert Thorsten Dörfler Samstag, 17. Juli 2010 21:41
-
Ich sitze z.Zt. an dem gleichen Problem und hoffe auf eine Lösung. Die oben vorgeschlagene Lösung ist leider nur eine scheinbare, bei der zwar eine nicht identifizierbare Kopie (in welchem Ausgabeverzeichnis steht die eigentlich?) erstellt wird, aber die Daten werden nicht wirklich in die Datenbank geschrieben. Allerdings findet der TableAdapter beim erneuten Aufruf des Programms die Kopie der Daten wieder und zeigt sie richtig an, aber das ist nicht zuverlässig. Es passiert schon mal, daß sie auch aus unerfindlichen Gründen verschwinden auf nimmer wiedersehen. Also das Problem wartet weiter auf eine Lösung,
oder hat sie vielleicht schon jemand zwischenzeitlich gefunden ?
Es wäre ausgezeichnet. Bitte melden !! -
Hallo Rolf,
hatte ein ähnliches Problem, bis ich herausfand, dass man die Änderungen mit der Updatemethode des Datenadapters in die Tabelle schreiben muss.
Unten einmal ein Beispiel für den SQL Server 2005 mit der Tabelle "Schwimmer"
Dim adapter As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter("SELECT FROM Schwimmer ", Me.SchwimmerTableAdapter1.Connection) ' 2. Das Update-Command definieren und dem Adapter zuweisenadapter.UpdateCommand =
New SqlClient.SqlCommand( _ "UPDATE Schwimmer SET Schwimmer_Name = @Schwimmer_Name, DSV_ID= @DSV_ID, Schwimmer_Vorname = @Schwimmer_Vorname,Schwimmer_JG = @Schwimmer_JG, Schwimmer_geboren = @Schwimmer_geboren,Schwimmer_Verein = @Schwimmer_Verein,Schwimmer_Geschlecht = @Schwimmer_Geschlecht,Schwimmer_Strasse = @Schwimmer_Strasse,Schwimmer_PLZ = @Schwimmer_PLZ,Schwimmer_Telefon = @Schwimmer_Telefon,Schwimmer_Ort = @Schwimmer_Ort,Schwimmer_Mobil = @Schwimmer_Mobil,Schwimmer_Mail = @Schwimmer_Mail,Schwimmer_Gruppe = @Schwimmer_Gruppe where Schwimmer_ID=@Schwimmer_ID", Me.SchwimmerTableAdapter1.Connection) Dim newCustomersRow As SchwimmenDataset1.SchwimmerRownewCustomersRow = SchwimmenDataSet11.Schwimmer.NewSchwimmerRow
newCustomersRow.DSV_ID = txt_DSV_ID.Text
newCustomersRow.Schwimmer_ID = Str(
Me.SchwimmenDataSet11.Schwimmer.Rows.Count + 1) ' Hier soll die ID als MaxRow(+1) ausgegeben werdennewCustomersRow.Schwimmer_Name = Txt_Name.Text
newCustomersRow.Schwimmer_Vorname = txt_Vorname.Text
newCustomersRow.Schwimmer_geboren = txt_geboren.Text
If RadioButton_männlich.Checked = True ThennewCustomersRow.Schwimmer_Geschlecht =
"m" ElsenewCustomersRow.Schwimmer_Geschlecht =
"w" End IfnewCustomersRow.Schwimmer_JG = txt_Jahrgang.Text
newCustomersRow.Schwimmer_Verein =
"TV Gut Heil Billstedt"newCustomersRow.Schwimmer_Strasse = txt_Strasse.Text
newCustomersRow.Schwimmer_PLZ = txt_PLZ.Text
newCustomersRow.Schwimmer_Ort = txt_Ort.Text
newCustomersRow.Schwimmer_Telefon = txt_Telefon.Text
newCustomersRow.Schwimmer_Mobil = txt_Mobiltelefon.Text
newCustomersRow.Schwimmer_Mail = txt_Mail.Text
newCustomersRow.Schwimmer_gruppe =
Me.ListBox1.SelectedValue 'SchwimmenDataSet11.Schwimmer.Rows.Add(newCustomersRow) ' eingeben beenden und Daten an DB senden Me.BindingSource1.EndEdit() 'beenden der Editierfunktion Me.SchwimmenDataSet11.AcceptChanges() Me.GroupBox2.Visible = True Me.Label13.Visible = True Me.DataGridView1.Visible = Trueadapter.UpdateCommand.Parameters.Add(
"@Schwimmer_ID", SqlDbType.NChar, 10, "Schwimmer_ID")adapter.UpdateCommand.Parameters.Add(
"@DSV_ID", SqlDbType.NChar, 10, "DSV_ID")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Name", SqlDbType.NChar, 30, "Schwimmer_Name")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_VorName", SqlDbType.NChar, 30, "Schwimmer_VorName")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_JG", SqlDbType.NChar, 4, "Schwimmer_JG")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_geboren", SqlDbType.NChar, 10, "Schwimmer_geboren")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Verein", SqlDbType.NChar, 45, "Schwimmer_Verein")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Geschlecht", SqlDbType.NChar, 1, "Schwimmer_Geschlecht")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Strasse", SqlDbType.NChar, 40, "Schwimmer_Strasse")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_PLZ", SqlDbType.NChar, 5, "Schwimmer_PLZ")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Ort", SqlDbType.NChar, 40, "Schwimmer_ORT")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Telefon", SqlDbType.NChar, 10, "Schwimmer_Telefon")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Mobil", SqlDbType.NChar, 15, "Schwimmer_Mobil")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Mail", SqlDbType.NChar, 40, "Schwimmer_Mail")adapter.UpdateCommand.Parameters.Add(
"@Schwimmer_Gruppe", SqlDbType.NChar, 30, "Schwimmer_Gruppe")adapter.Update(
Me.SchwimmenDataSet11.Schwimmer.Select(Nothing, Nothing, DataViewRowState.ModifiedCurrent)) -
Hallo,
habe auch lange gesucht und bin durch Zufall dahintergekommen. In den Eigenschaften der einzelnen Felder (Textbox) auf das (plus) der DataBindings gehen. Dann (Erweitert) auswählen, rechts auf den Button klicken. In der sich öffnenden Dialogbox sich die entsprechende Bindung aussuchen und innerhalb dieser Bindung die einzelnen Felder.