18. november 2004 - 19:55
Der er
9 kommentarer
Datagrid, opdater i db
Jeg populerer et datagrid med data fra en Access db på følgende måde: private void Form1_Load(object sender, System.EventArgs e) { DataTable customerTable = controller.getCustomerTable(); this.gridCustomer.DataSource = customerTable; } public DataTable getCustomerTable() { OleDbConnection con = null; try { con = new OleDbConnection(SOURCE); dAdapter = new OleDbDataAdapter("SELECT * FROM CUSTOMER", con); dSet = new DataSet(); dAdapter.Fill(dSet,"CUSTOMER"); } catch(OleDbException e) { Console.WriteLine("OleDb error: " + e.Message); } return dSet.Tables["CUSTOMER"]; } Data kommer fint frem i grid'et, men ændringerne gemmes ikke i databasen, når jeg lukket programmet. Hvordan gør jeg det?
Annonceindlæg fra Infor
18. november 2004 - 19:59
#1
Du skal vel kalde: dAdapter.Update(dSet,"CUSTOMER"); når formen lukkes.
18. november 2004 - 20:15
#2
Det har jeg prøvet. Herved får jeg følgende fejl: An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll Additional information: Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
18. november 2004 - 20:17
#3
Er det noget med, at jeg, et eller andet sted, skal definere, hvordan min SQL UPDATE på CUSTOMER ser ud?
18. november 2004 - 20:17
#4
Prøv og sæt en: OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter); ind
18. november 2004 - 20:25
#5
Kan du uddybe, hvad jeg skal gøre med den?
18. november 2004 - 20:26
#6
Så vidt jeg ved : ingenting Den burde selv assigne en UPDATE kommando til dAdapter
18. november 2004 - 20:27
#7
Hvis det ikke virker kan det dig gøres manuelt
18. november 2004 - 20:42
#8
Det hjalp med... OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter); cBuilder.GetUpdateCommand(); dAdapter.Update(dSet,"CUSTOMER"); ...hvis jeg redigerer direkte i grid'et, hvilket helt sikkert er et fremskridt, så tak for det, men jeg har også nogle tekstfelter, som er bundet til felterne via... this.textBoxName.DataBindings.Add("Text",dt,"Name"); this.textBoxAddress.DataBindings.Add("Text",dt,"Address"); this.textBoxZip.DataBindings.Add("Text",dt,"Zip"); this.textBoxCity.DataBindings.Add("Text",dt,"City"); ...hvor dt er min Customer DataTable. Hvis jeg retter i disse felter afspejler ændringerne sig ikke i databasen?! selvom jeg bruger OleDbCommandBuilder
18. november 2004 - 22:08
#9
pas
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.