Zum Inhalt springen

Aktualisieren einer .mdb aus einem datagridview


attix

Empfohlene Beiträge

Hallo zusammen

Folgender Code sollte mir die im Datagrid neue eingetragenen Werte in die ins Projekt eingebundene .mdb eintragen.

Das wird beim Klick auf den Edit Button ausgeführt:


            //Öffnen der Datenbank Verbindung

            inlistTableAdapter.Connection.Open();


            //Koordinate der markierten Zeile auslesen

            int inlist_y = dataGridView1.CurrentCellAddress.Y;

            //Zuweisen der Variableninhalte aus dem Datagridview

            string inlist_edit_symbol = dataGridView1.Rows[inlist_y].Cells[0].Value.ToString();

            string inlist_edit_wert1 = dataGridView1.Rows[inlist_y].Cells[1].Value.ToString();

            string inlist_edit_wert2 = dataGridView1.Rows[inlist_y].Cells[2].Value.ToString();

            string inlist_edit_wert3 = dataGridView1.Rows[inlist_y].Cells[3].Value.ToString();

            string inlist_edit_wert4 = dataGridView1.Rows[inlist_y].Cells[4].Value.ToString();

            string inlist_edit_wert5 = dataGridView1.Rows[inlist_y].Cells[5].Value.ToString();

            string inlist_edit_wert6 = dataGridView1.Rows[inlist_y].Cells[6].Value.ToString();

            string inlist_edit_isin = dataGridView1.Rows[inlist_y].Cells[7].Value.ToString();

            //Testausgabe der ausgelesenen Werte

            MessageBox.Show(inlist_edit_symbol+" "+inlist_edit_wert1+" "+inlist_edit_wert2+" "+inlist_edit_wert3+" "+inlist_edit_wert4+" "+inlist_edit_wert5+" "+inlist_edit_wert6+" "+inlist_edit_isin);

            //Akutalisieren der DB

            inlistTableAdapter.Update(dB_DataSet.inlist);

            //Schließen der DB

            inlistTableAdapter.Connection.Close();

Allerdings ändert sich der Inhalt der mdb nicht.

Der Debugger gibt mir keine Fehlermeldung aus.

Habe ich irgendetwas vergessen? Bin nach MSDN Hilfe vorgegangen, da dies meine erstes Programm mit einer .mdb ist.

Bitte kein Geschreie falls da eine idiotischer Fehler drin ist, in meinem Betrieb kann keiner C# und bin nicht sooo fit darin.

Vielen Dank schonmal im Vorraus :-)

Mfg Attix

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also einen Fehler wird es dort auch nicht geben. Du liest im Mittelteil des Codes Zellwerte aus und weist diese Variablen vom Typ String zu...

Aber wo passiert etwas mit dem DataSet?

Du führst ein Update für das DataSet aus (.Update(...)). Aber es liegen keine Änderungen vor...

Wie sieht denn das Insert-Command des TableAdapters aus?

Im Endeffekt sollte es vor dem Update erstmal etwas wie:


            this.mitarbeiterTableAdapter.Insert("Testname", 1234);            

geben. Du fügst dem DataSet im Speicher Zeilen hinzu und musst es dann "Updaten" damit es auch in die .mdb übernommen werden kann.

            this.mitarbeiterTableAdapter.Update(testDBDataSet.Mitarbeiter);

Gruß,

Thomas

Gruß,

Thomas

Bearbeitet von .NETter
Kleiner Tippfehler
Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für die verständlich erklärte Hilfe ;-)

hab nun den code um das Insert Command ergänzt, leider erhalte ich im Debugger aber folgendes wenn ich die Insert Anweisung anschaue:

CommandText = "INSERT INTO `inlist` (`Kurs`, `symbol`, `wert1`, `wert2`, `wert3`, `wert4`, `wert5`, `wert6`, `sound`, `ISIN`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

Hier nochmal der betreffende Code:


            //Aktualisieren des Data Sets

            inlistTableAdapter.Insert(1.11, inlist_edit_symbol, inlist_edit_wert1, inlist_edit_wert2, inlist_edit_wert3, inlist_edit_wert4, inlist_edit_wert5, inlist_edit_wert6, "sound", inlist_edit_isin);

            //Akutalisieren der DB anhand des Datasets

            inlistTableAdapter.Update(dB_DataSet.inlist);

            //Schließen der DB

            inlistTableAdapter.Connection.Close();

"sound" ist eine Spalte die ich befüllen muss obwohl ich sie nicht brauche, dass wird noch geändert^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das sieht doch im Debugger OK aus. Funktioniert den die Übertragung ins .mdf File???

Bei einem OleDb Command sind die Parameter nicht benannt sondern mit "?" bezeichnet. Hier entscheidet die Reihenfolge in der die Parameter übergeben werden.

Falls es nicht klappen sollte bitte mal einen kompletten (oder zumindest relevante Teile) SourceCode-Auszug einstellen.

Gruß,

Thomas

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

danke für die Info bezüglich der ??? im Oledb Command, war mir nicht bekannt.

Das Problem ist, das trotzdem nichts in der Datenbak verändert wird.

Der Debugger gibt mir jedoch nichts aus, was auf einen Fehler schließen lässt.

Ich trage eine neue Zeile ein, dann klicke ich auf den edit button


        private void inlist_edit_Click(object sender, EventArgs e)

        {

            //Öffnen der Datenbank Verbindung

            inlistTableAdapter.Connection.Open();

            //Koordinate der markierten Zeile auslesen

            int inlist_y = dataGridView1.CurrentCellAddress.Y;

            //Zuweisen der Variableninhalte aus dem Datagridview

            string inlist_edit_symbol = dataGridView1.Rows[inlist_y].Cells[0].Value.ToString();

            string inlist_edit_wert1 = dataGridView1.Rows[inlist_y].Cells[1].Value.ToString();

            string inlist_edit_wert2 = dataGridView1.Rows[inlist_y].Cells[2].Value.ToString();

            string inlist_edit_wert3 = dataGridView1.Rows[inlist_y].Cells[3].Value.ToString();

            string inlist_edit_wert4 = dataGridView1.Rows[inlist_y].Cells[4].Value.ToString();

            string inlist_edit_wert5 = dataGridView1.Rows[inlist_y].Cells[5].Value.ToString();

            string inlist_edit_wert6 = dataGridView1.Rows[inlist_y].Cells[6].Value.ToString();

            string inlist_edit_isin = dataGridView1.Rows[inlist_y].Cells[7].Value.ToString();

            //Testausgabe der ausgelesenen Werte

            MessageBox.Show(inlist_edit_symbol+" "+inlist_edit_wert1+" "+inlist_edit_wert2+" "+inlist_edit_wert3+" "+inlist_edit_wert4+" "+inlist_edit_wert5+" "+inlist_edit_wert6+" "+inlist_edit_isin);

            //Aktualisieren des Data Sets

            inlistTableAdapter.Insert(1.11, inlist_edit_symbol, inlist_edit_wert1, inlist_edit_wert2, inlist_edit_wert3, inlist_edit_wert4, inlist_edit_wert5, inlist_edit_wert6, "sound", inlist_edit_isin);

            //Akutalisieren der DB anhand des Datasets

            inlistTableAdapter.Update(dB_DataSet.inlist);

            //Schließen der DB

            inlistTableAdapter.Connection.Close();
Übrigens der einzige Button zurzeit, da ich nur an einer Baustelle arbeiten will. Im FormLoad steht noch folgendes:

            this.inlistTableAdapter.Fill(this.dB_DataSet.inlist);

Mfg Attix

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

kann es sein, dass die .mdb Datei bei jedem Erstellen (auch bei F5) wieder in das Ausgabeverzeichnis kopiert wird?

Ein gern und oft gemachter Fehler :-)

Erstelle das Projekt und starte es direkt im bin\Debug Pfad mit der exe-Datei. Füge dann mal einen datensatz hinzu und schließe deine Anwendung wieder. Dann prüfe die Access-Datei direkt mit Access.

Ist dort der Datensatz enthalten?

Wenn ja, wird die bestehende DB bei jedem Erstellen wieder neu ins Ausgabeverzeichnis kopiert.

Falls Du das umstellen möchtest markiere in deinem Projekt das mdf.-File und sieh dir eigenschaften an.

Dort gibt es die Einstellung:

"In Ausgabeverzeichnis kopieren" dort solltest du dann auf "nicht kopieren" oder "nur wenn neuer" umstellen solange Du testest.

Gruß,

Thomas

Link zu diesem Kommentar
Auf anderen Seiten teilen

OMG

Vielen vielen Dank, das war der Fehler :D

Kaum zu glauben was sowas ausmacht, komisch ist nur , dass selbst wenn ich auf nie kopieren stell, der Datensatz nicht in der mdb erscheint.

Führe ich die exe allerdings im Debugverzeichnis aus klappt alles.

Dem Problem geh ich übers Wochenende aufn Grund aber nichtmehr heute.

Vielen Dank nochmal und ein schönes Wochenende :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...