Avatar billede alex_sleiborg Nybegynder
01. maj 2007 - 14:26 Der er 11 kommentarer og
1 løsning

Opdatere database fra DataGridView

Hej

Jeg har en Datagridview, som jeg fylder ved hjælp af et dataset. Men hvis der bliver ændret i Datagridview vinduet, så skal databasen også opdateres. Hvordan laver jeg det nemmest?
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 08:29 #1
Prøv at kigge her:
http://66.102.9.104/search?q=cache:B8zs1MYBWf4J:msdn2.microsoft.com/en-us/fbk67b6z(vs.80).aspx+c%23+Datagridview+update+database&hl=da&ct=clnk&cd=13&gl=dk
Avatar billede alex_sleiborg Nybegynder
03. maj 2007 - 09:28 #2
Jeg får en fejl, selvom jeg har copy pastet den kode. Den henter fint data ind i datagridview controllen.

Men når den skal gemme, får jeg en exception her

da.Update((DataTable)bs1.DataSource);

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
Avatar billede alex_sleiborg Nybegynder
03. maj 2007 - 09:58 #3
Jeg får kun lov til at updatere databasen, hvis det er alle kolonner der er med.
Altså "select * FROM produktion"

Ikke hvis jeg gør sådan

"SELECT ProdKort, StartTid, StopTid FROM produktion"

Og jeg skal ikke have alle sammen med? Hvad gør jeg for at løse dette?
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 12:09 #4
Avatar billede alex_sleiborg Nybegynder
03. maj 2007 - 13:08 #5
SqlConnection con = new SqlConnection(DataGateway.ConS);
        SqlDataAdapter sqlDa;
        DataSet dSet = new DataSet();

        private void altdata_Load(object sender, EventArgs e)
        {
            sqlDa = new SqlDataAdapter("SELECT ProdKort, StartTid, StopTid, DriftTimer, ProdtuktType1, ProduktType2, ProduktType3 FROM Produktion", con);
            sqlDa.Fill(dSet, "Produktion");
            DGVMain.DataSource = dSet.Tables["Produktion"];

        }
        private void Redigering_FormClosing(object sender, FormClosingEventArgs e)
        {
            SqlCommand upCmd = new SqlCommand("update Produktion set ProdKort=@prodkort, StartTid=@starttid, StopTid=@stoptid, DriftTimer=@drifttimer, ProdtuktType1=@prodtukttype1, ProduktType2=@produkttype2, ProduktType3=@produkttype3", con);
            upCmd.Parameters.Add("@prodkort", SqlDbType.Int, 4, "1111");
            upCmd.Parameters.Add("@starttid", SqlDbType.DateTime, 8, "1111");
            upCmd.Parameters.Add("@stoptid", SqlDbType.DateTime, 8, "1111");
            upCmd.Parameters.Add("@drifttimer", SqlDbType.Decimal, 9, "1");
            upCmd.Parameters.Add("@prodtukttype1", SqlDbType.Int, 4, "11");
            upCmd.Parameters.Add("@produkttype2", SqlDbType.Int, 4, "11");
            upCmd.Parameters.Add("@produkttype3", SqlDbType.Int, 4, "11");
            sqlDa.UpdateCommand = upCmd;

            sqlDa.Update(dSet, "Produktion");
        }

Hvordan får jeg den til at opdatere de felter i databasen? Det kan jeg ikke lige overskue?
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 13:29 #6
Har du ikke en id kolonne ?
Avatar billede alex_sleiborg Nybegynder
03. maj 2007 - 13:38 #7
Jo jeg har så. Men den henter jeg ikke ind. Det kan jeg selvfølgelig godt, har du en ide til hvordan jeg får det lavet? Men primary key ligger på prodkort
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 13:51 #8
du skal have primary key med som en where i
("update Produktion set ProdKort=@prodkort, StartTid=@starttid, StopTid=@stoptid, DriftTimer=@drifttimer, ProdtuktType1=@prodtukttype1, ProduktType2=@produkttype2, ProduktType3=@produkttype3
Avatar billede alex_sleiborg Nybegynder
03. maj 2007 - 14:12 #9
Skal den ikke også have at vide, hvilken data der skal ind i hver Parameter? Det går jo ikke der bare står 1111?
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 14:31 #10
jo f.eks:
upCmd.Parameters.Add("@prodkort", SqlDbType.Int, 4, "ProdKort");
Avatar billede alex_sleiborg Nybegynder
08. maj 2007 - 15:41 #11
Kanon. Det virker bare:) Smid et svar, og tak for hjælpen
Avatar billede dr_chaos Nybegynder
08. maj 2007 - 18:07 #12
svar:)
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