Avatar billede simsen Mester
21. juli 2006 - 10:19 Der er 1 løsning

UpdateCommand versus Fill

Hej

Jeg har to datagridviews, hvor jeg har fundet ud af at lave en update kommando, så jeg også kan gemme ændringer mm i databasen.

Nu er det således, at jeg også har en form til at oprette nye kunder, når jeg går retur fra formen efter at have oprettet ny kunde, opdaterer den ikke Kunde datagridview'et. Jeg ville så forsøge at lave en fill kommando, men får samme fejl, som inden jeg lavede en CommandBuilder til update.

Jeg kan ikke finde en FillCommand, som jeg kan med delete, insert og update. Findes der ikke sådan en og hvis nej - hvad skal jeg så gøre?

mvh
simsen

Min kode:


        OleDbConnection cn = null;
        private DataViewManager dsView;
        private DataSet ds;
        private OleDbDataAdapter da1;
        private OleDbDataAdapter da2;
        private OleDbCommandBuilder cBuilderKunder;
        private OleDbCommandBuilder cBuilderFaktura;
       

        string myDB = "c:\\ANSI\\Fakturasystem.mdb";

        public void Faktureringssystem_Load_1(object sender, EventArgs e)
        {           
            this.firmaoplysningerTableAdapter.Fill(this.fakturasystemDataSet.Firmaoplysninger);
            this.produkterTableAdapter.Fill(this.fakturasystemDataSet.Produkter);

            //create a connection string to the access database
            OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;
                                        User Id=;Password=;
                                        Data Source=" + myDB);

            // Create the DataSet     
            ds = new DataSet("KundeFaktura");

            // Fill the Dataset with Kunder, map Default Tablename
            // "Table" to "Kunder".
            da1 = new OleDbDataAdapter("SELECT KundeId, Navn, Adresse, Postnr, Byen, Telefonnr, Mobilnr FROM Kunder", cn);
            da1.TableMappings.Add("Table", "Kunder");
            da1.Fill(ds);

            // Fill the Dataset with Faktura, map Default Tablename
            // "Table" to "Faktura".    ORDER BY FakturaID DESC       
            da2 = new OleDbDataAdapter("SELECT FakturaID, KundeID, Dato, BetalingsDato, Betalt FROM Faktura ORDER BY FakturaID DESC", cn);
            da2.TableMappings.Add("Table", "Faktura");
            da2.Fill(ds);


            // Establish the Relationship "RelOrdDet"
            // between Kunder ---< [Faktura]
            System.Data.DataRelation relOrdDet;
            System.Data.DataColumn colMaster2;
            System.Data.DataColumn colDetail2;
            colMaster2 = ds.Tables["Kunder"].Columns["KundeId"];
            colDetail2 = ds.Tables["Faktura"].Columns["KundeID"];
            relOrdDet = new System.Data.DataRelation("RelOrdDet", colMaster2, colDetail2);
            ds.Relations.Add(relOrdDet);

            // The DataViewManager returned by the DefaultViewManager
            // property allows you to create custom settings for each
            // DataTable in the DataSet.
            dsView = ds.DefaultViewManager;

            // Databinding for the Grid's
            dgrKunder.DataSource = dsView;
            dgrKunder.DataMember = "Kunder";

            dgrFaktura.DataSource = dsView;
            dgrFaktura.DataMember = "Kunder.RelOrdDet";
        }

        private void btnUpdateKunder_Click(object sender, EventArgs e)
        {
            //this.kunderTableAdapter.Fill(this.fakturasystemDataSet.Kunder);
            builderOpbygning();
            this.da1.Update(ds, "Kunder");
        }
        private void btnFakturaGem_Click(object sender, EventArgs e)
        {
            builderOpbygning();

            da2.Update(ds, "Faktura");

            MessageBox.Show("Ændringerne er gemt");

        }

        private void builderOpbygning()
        {           
            cBuilderKunder = new OleDbCommandBuilder(da1);
            cBuilderFaktura = new OleDbCommandBuilder(da2);
                       
            da1.UpdateCommand = cBuilderKunder.GetUpdateCommand();
            da2.UpdateCommand = cBuilderFaktura.GetUpdateCommand();
        }
Avatar billede simsen Mester
21. juli 2006 - 21:48 #1
Jeg har brugt følgende i min opdaterknap

this.ds.Clear(); //for at fjerne alt fra datasettet
this.da1.Fill(this.ds, "Kunder"); //for at fylde datasettet igen

simsen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester