attix Geschrieben 12. Februar 2010 Geschrieben 12. Februar 2010 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 Zitieren
.NETter Geschrieben 12. Februar 2010 Geschrieben 12. Februar 2010 (bearbeitet) 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 12. Februar 2010 von .NETter Kleiner Tippfehler Zitieren
attix Geschrieben 12. Februar 2010 Autor Geschrieben 12. Februar 2010 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^^ Zitieren
.NETter Geschrieben 12. Februar 2010 Geschrieben 12. Februar 2010 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 Zitieren
attix Geschrieben 12. Februar 2010 Autor Geschrieben 12. Februar 2010 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 Zitieren
.NETter Geschrieben 12. Februar 2010 Geschrieben 12. Februar 2010 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 Zitieren
attix Geschrieben 12. Februar 2010 Autor Geschrieben 12. Februar 2010 OMG Vielen vielen Dank, das war der Fehler 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 Zitieren
Empfohlene Beiträge
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.