[C#] Änderungen im DataGridView in Datenbank speichern

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von s1nu, 1. Dezember 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 1. Dezember 2012
    Änderungen im DataGridView in Datenbank speichern

    Hey Leute, ich schreib grad ein kleines Programm für meine Freundin, dass optisch aktuell so aussieht:

    Spoiler
    {bild-down: http://sphotos-b.ak.fbcdn.net/hphotos-ak-ash3/558973_519746281383694_998810940_n.jpg}

    Geplant ist es so, dass das DGV immer aktuell die Daten aus einer Accessdatenbank holt, im Programm änderbar ist und dann wieder in der Accessdatenbank gespeichert wird.

    Ich hab aktuell die Datenbank in ein DataSet geladen und dass füllt mir mein DGV auf, allerdings weiß ich nicht, wie ich Änderungen speichern kann. (Ich hoffe, ich kann mich halbwegs verständlich ausdrücken) Ich bekomm also Daten reingeladen und möchte im DGV noch weitere Reihen hinzufügen, anschließend sollen die Änderungen im Datenbankfile gespeichert werden und beim Drücken vom Aktualisierungsbutton neu ins DGV geladen werden.

    Eine zweite Frage habe ich dann auch noch: Wenn ich in eine neue Zeile drücke beim DGV setzt er automatisch eine ID ein. Dass ist natürlich nicht schlecht, nur warum setzt er -1, -2, -3 usw. ein?

    Ich verwende Microsoft Visual Studio 2010 Express
    Hoffe Ihr könnt mir helfen. BW is grundsätzlich Ehrensache
     
  2. 2. Dezember 2012
    AW: Änderungen im DataGridView in Datenbank speichern

    Also im Normalfall ist die Updatefunktion nicht die Welt

    Code:
     private int updateData()
     {
     if (bSource != null && dAdapter != null && dTable != null)
     {
     [COLOR="Red"][B]return dAdapter.Update(dTable);[/B][/COLOR]
     }
     return -1;
     }
    
    Ein OleDbDataAdapter hat die .Update Methode integriert.
    Da der Adapter mit dem DataTable verknüpft ist, benutzt er also deine im Programm geänderten Daten und schreibt alle Änderungen in die Access Datenbank
    Bei meinem Codebeispiel wird ein integer Wert zurück gegeben, der die Anzahl der geänderten Zeilen zurückgibt.
    So kannst du einfach kontrollieren, ob die Änderungen übertragen wurden
    Bei einem Ergebnis von -1 ist ein Fehler aufgetreten, das sollte aber eigentlich nicht passieren (außer du hast z.b. die Daten aus Access noch nicht eingelesen oder sowas)
    Bei einem Ergebnis von 0 sind keine Änderungen vorgenommen worden und die restlichen Ergebnisse spiegeln die geänderten Zeilen wieder.

    Die if-Abfrage im Codebeispiel kannst du auch weglassen

    Mit dem Hochzählen könnte ich momentan nur raten, da es bei mir normal funktioniert hat, sprich nur positive Werte erzeugt wurden.

    Hoffe ich konnte dir wenigstens mit dem Update helfen
     
    1 Person gefällt das.
  3. 3. Dezember 2012
    AW: Änderungen im DataGridView in Datenbank speichern

    Hallo!

    Schonmal danke, dass du dir hierzu Gedanken gemacht hast. Ich bin noch nicht so erfahren und muss daher weiter fragen. (Ich kanns mir nicht so recht vorstellen, das Ganze)

    Ich habe das Programm geöffnet und kann das DGV bearbeiten und wie kann ich dann die Änderungen speichern? Ich habe im StripMenu einen Punkt der "Änderungen speichern" heißt und möchte damit gerne die im DGV geänderten Daten in die Accessdatenbank speichern.
    Was muss ich tun? Rein von der Theorie her müsste es ja so laufen:

    1.) überprüfe, ob Änderungen waren (GetChanges()
    2.) wenn Änderungen, dann überschreibe das DataSet (ka? update.DataSet vllt oder sowas?)
    3.) Das DataSet speichert anschließend die Daten in die Accessdatenbank (beim Speichern oder beenden des Programmes durch den benutzer)
    4.) und mit aktualisieren, möchte ich, dass die aktuellen Daten vom DataSet geholt werden, welches sich beim Starten des Programms die aktuellen Daten aus der Datenbank zieht.

    Nur tu ich mir etwas schwer bei dem Ganzen und bin über jede Hilfe dankbar.
    Ich hab auch in meiner "Form1" keinen Code, der die Verbindung festlegt oder öffnet, da ich das DataSet als Element hinzugefügt hab und das DGV ans DataSet gebunden ist..
     
  4. 3. Dezember 2012
    AW: Änderungen im DataGridView in Datenbank speichern

    Ganz so kompliziert brauchst du gar nicht denken
    Da du dein DataSet über den Assistenten erstellt hast, solltest du eigentlich auch eine "xxxBindingSource" und einen "xxxTableAdapter" neben deinem DataSet haben. (xxx wird in dem Fall durch den Namen deiner Datenbank ersetzt)

    Der TableAdapter (in meinem Beispiel hieß der dAdapter) bietet dir die .Update Methode, die automatisch die richtigen Befehle ausführt, um Zeilen zu löschen, zu ändern oder hinzuzufügen.
    Das heißt mit dieser Methode werden automatisch die richtigen Befehle genutzt, um alle Änderungen in die Access Datenbank zu übertragen.

    Ist bissl schwer zu erklären, da ich die Verbindung immer manuell herstelle, aber sobald man das einmal drin hat, ist das recht einfach ^^
    Kannst mich aber im Zweifelsfall gern mal per Skype oder so anschreiben, dann versuch ich das mal anhand eines kleinen Beispiels
     
  5. 4. Dezember 2012
    AW: Änderungen im DataGridView in Datenbank speichern

    Sehr geil, konnte deine Lösung gerade testen und es klappt einfach wunderbar

    Vielen Dank. Ich freue mich sehr über dein Angebot und werd dir ne PM schreiben, wenn ich wieder mal Hilfe benötige. Danke Danke!!
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.