none
Dataset in Datenbank speichern RRS feed

  • 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.

    Freitag, 16. Juni 2006 19:48

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.

    Mittwoch, 28. Juni 2006 09:30

Alle Antworten

  • Ach ja. Selbst der BindingNavigator speichert keine Daten.
    Freitag, 16. Juni 2006 20:27
  • Schon was rausgefunden?

    Hab das selbe Problem ...
    Dienstag, 27. Juni 2006 08:15
  • Ich habe auch dieses Problem. Ich hoffe das irgendjemand uns sagen kann woran das liegt ...
    Dienstag, 27. Juni 2006 13:56
  • 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. 

    Dienstag, 27. Juni 2006 18:12
  • 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.

    Mittwoch, 28. Juni 2006 09:30
  • 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 !!
    Samstag, 9. Juni 2007 21:01
  • 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 zuweisen

    adapter.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.SchwimmerRow

    newCustomersRow = 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 werden

    newCustomersRow.Schwimmer_Name = Txt_Name.Text

    newCustomersRow.Schwimmer_Vorname = txt_Vorname.Text

    newCustomersRow.Schwimmer_geboren = txt_geboren.Text

    If RadioButton_männlich.Checked = True Then

    newCustomersRow.Schwimmer_Geschlecht = "m"

    Else

    newCustomersRow.Schwimmer_Geschlecht = "w"

    End If

    newCustomersRow.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 = True

    adapter.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))

    Samstag, 16. Juni 2007 14:31
  • 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.

     

    Samstag, 25. August 2007 06:22