Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Update u tabelu preko binding grida

[es] :: .NET :: .NET Desktop razvoj :: Update u tabelu preko binding grida

[ Pregleda: 2263 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Update u tabelu preko binding grida14.08.2009. u 13:58 - pre 178 meseci
Imam dataGridView koji je bindovan za jednu tabelu. Taj grid prikazuje podatke koji su rezultat selekta sa where uslovom (po jednoj koloni). E sad, imam problem kada hocu da update-ujem tu tabelu, javlja gresku:
Citat:
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

Ovako sam vezao grid i pokupio podatke:
Code:


OleDbDataAdapter daCijene;
DataTable Cijene;

...

            string query = "SELECT Pozivni, Cijene.ID_Br, Tarifa, FL_Charge, FL_Duration, Unit_Charge, Unit_Duration FROM CIJENE INNER JOIN POZIVNI_BR ON CIJENE.id_BR = POZIVNI_BR.id_bR " +
                "WHERE Cijene.Tab = '" + cmbCostTrunk.Text +"'";
            daCijene = new OleDbDataAdapter(query, connString);
            Cijene = new DataTable();
            daCijene.Fill(Cijene);
            BindingSource bSource = new BindingSource();
            bSource.DataSource = Cijene;

            dgCosts.DataSource = bSource;



Ovo mi je sve radilo dok nisam postavio uslov po kojem se selektuju podaci i prikazuju u grid. Nemam nekog iskustva sa bindovanim gridovima pa ako moze pomoc.

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
77.46.232.*



+1 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:04 - pre 178 meseci
Pogledaj ovo http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/5dec5633-ac84-48d9-8fd6-5c7601be4ccd.
Mozda ce ti pomoci.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:22 - pre 178 meseci
Hvala na linku, ali mi nije pomogao.
Tamo je primjer koji ne prikazuje filterovane podatke, nego cisti select. To je kod mene radilo dok nisam poslavio filter po jednoj koloni. Takodje, tabela ima primarni kljuc kojeg cine tri kolone.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
77.46.232.*



+1 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:41 - pre 178 meseci
Probaj da pokrenes sam upit da vidis da li ti vraca podatke koji ti trebaju.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:45 - pre 178 meseci
Ne kontam te. Meni upit vrati slogove i napuni ih u grid, ja u gridu izmjenim neke podatke i idem na dugme Update koje bi trebalo da update-uje tabelu ali mi javi onu gresku.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
77.46.232.*



+1 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:50 - pre 178 meseci
Izvini, nisam skontao da ti radi select a ne radi update. Ne znam kako ti radi metoda za Update ali posto imas spajanje tabela, pretpostavljam da ces morati da modifikujes metodu kojom update-ujes tabelu.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 14:59 - pre 178 meseci
Evo update metode:
Code:

        private void cmdUpdCosts_Click(object sender, EventArgs e)
        {
            OleDbCommandBuilder cb = new OleDbCommandBuilder(daCijene);
            OleDbConnection cn = new OleDbConnection(connString);
            
            cb.DataAdapter.SelectCommand = new OleDbCommand("SELECT ID_Br, Tab, Tarifa, FL_Charge, FL_Duration, Unit_Charge, Unit_Duration FROM Cijene", cn);

            try
            {
                daCijene.Update(Cijene);
            }
            catch (InvalidOperationException ioe)
            {
                System.Diagnostics.Debug.WriteLine(ioe.Message.ToString());
                MessageBox.Show(ioe.Message);
            }

        }


Morao sam definisati SelectCommand dataAdapter-a bas zbog toga sto je spojena tabela. Napominjema da mi je radio update dok nisam postavio where uslov u selektu (kad prikazjem podatke).
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
77.46.232.*



+1 Profil

icon Re: Update u tabelu preko binding grida14.08.2009. u 15:20 - pre 178 meseci
Nisam siguran da li ti ovo moze pomoci: http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.updatecommand(VS.71).aspx
Ako sam skontao, treba ti custom update izraz.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Update u tabelu preko binding grida15.08.2009. u 20:17 - pre 178 meseci
Nisam uspio. Evo kod koji sam prepravio sluzeci se primjerom:
Code:

        private void cmdUpdCosts_Click(object sender, EventArgs e)
        {
            OleDbCommandBuilder cb = new OleDbCommandBuilder(daCijene);
            OleDbConnection cn = new OleDbConnection(connString);
            OleDbCommand cmd;

            cb.DataAdapter.SelectCommand = new OleDbCommand("SELECT ID_Br, Tab, Tarifa, FL_Charge, FL_Duration, Unit_Charge, Unit_Duration FROM Cijene", cn);
            cmd = new OleDbCommand();
            OleDbParameter parm = new OleDbParameter();

            cmd.CommandText = "UPDATE Cijene SET FL_Charge = @FL_Charge, SET FL_Duration = @FL_Duration, " +
                                   "SET Unit_Charge = @Unit_Charge, SET Unit_Duration = @Unit_Duration " +
                                   "WHERE ID_BR = @ID_BR AND Tab = @Tab AND Tarifa = @Tarifa";

            cmd.Parameters.Add("@FL_Charge", OleDbType.Currency, 15, dgCosts.Columns[3].ToString());
            cmd.Parameters.Add("@FL_Duration", OleDbType.Numeric, 15, dgCosts.Columns[4].ToString());
            cmd.Parameters.Add("@Unit_Charge", OleDbType.Currency, 15, dgCosts.Columns[5].ToString());
            cmd.Parameters.Add("@Unit_Duration", OleDbType.Numeric, 15, dgCosts.Columns[6].ToString());

            parm = cmd.Parameters.Add("@ID_BR", OleDbType.Char, 50, dgCosts.Columns[1].ToString());
            parm = cmd.Parameters.Add("@Tab", OleDbType.Char, 50, cmbCostTrunk.Text);
            parm = cmd.Parameters.Add("@Tarifa", OleDbType.Char, 50, dgCosts.Columns[2].ToString());
            
            parm.SourceVersion = DataRowVersion.Current;
            daCijene.UpdateCommand = cmd;

            try
            {
                daCijene.Update(Cijene);
            }
            catch (InvalidOperationException ioe)
            {
                System.Diagnostics.Debug.WriteLine(ioe.Message.ToString());
                MessageBox.Show(ioe.Message);
            }

        }


Kod mene je situacija malo komplikovanija nego u onom primjeru.
Neznam tacno kako bi update binding grida radi , ali kontam da se update izvrsava ovako: adapter protrcava kroz grid i na osnovu kljuca kojg sam mu definisao preko OleDbParameter, updejtuje u polja koja sam definisao cmd.Parameters-om?

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Update u tabelu preko binding grida18.08.2009. u 14:54 - pre 178 meseci
Rjesenje jos nije pronadjeno, ali meni vise i ne treba. Napravio sam metodu koja manuelno update-uje i sve radi savrseno, tako da ovakva genericka sr**ja
treba izbjegavati, bar cu se ja toga drzati.
Sve je to fino, bindovan grid za tabelu, ali evo slucaj kad se malo stvar zakomplikuje, problem. Ovako kad sam napravim svoje metode onda sam car nad kodom.


SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Update u tabelu preko binding grida

[ Pregleda: 2263 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.