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

Problem prilikom update-a

[es] :: .NET :: Problem prilikom update-a

[ Pregleda: 1730 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Problem prilikom update-a28.09.2007. u 19:31 - pre 201 meseci
Prije nekoliko dana makoh VS2003 i stavih VS2005 i super mi je.

Sad pravim tipizirane datasetove i klasa bindingsource je odlicna. Ali, imam problem sa update-om. Posto mi je dataset tipiziran, imam tableadapter-e a ne dataadaptere.

E sad konkretan problem:

Ubacujem novi zapis u dataset (pisem napamet moze bit gresaka):
NDRT.CK_Baza_DataSet.DataRow dr = new NDRT.CK_Baza_DataSet.NewRow();
this.CK_Baza_DataSet.AddRow(dr);
this.dataBindingSource.Position = this.dataBindingSource.Find("ID",dr["ID"].ToString());

Dugme za update TableAdaptera ima sledeci kod:
this.Validate();
this.dataBindingSource.EndEdit();
this.dataTableAdapter.Update(CK_Baza_DataSet.Data);

I konacno, greska:
Update radi ok dok ne ubacim novi red u dataset. Kada ubacim novi red u dataset i prvi put uradim update, sve je ok. E sad, promijenim li jos koje polje na istom zapisu, a da ne promijenim position svojstvo prijavice gresku (u jednom od dva slucaja):
DBConcurrencyException. kao Update affected 0 rows a ocekivao je da affect 1 row.

Sto mi je cinjet? Je li problem u ubacivanju novoga zapsa, ili sta?

Pozdrav.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Problem prilikom update-a28.09.2007. u 19:54 - pre 201 meseci
Malo mi je cudan ovaj tvoj kod, narocito dodavanje reda u dataset umesto u tabelu :)

Ali generalno kontam sta radis, umesto da instanciras nove DataRow, kreiraj ga koristeci AddXXXXRow() metod koji je generisan na nivou tabele, on ce automatskei kreirati row za tebe i dodati ga u tabelu.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Re: Problem prilikom update-a29.09.2007. u 13:54 - pre 201 meseci
Prvo mala ispravka, tice se koda koji dodaje novi zapis u dataset.

Dakle nije:
NDRT.CK_Baza_DataSet.DataRow dr = new NDRT.CK_Baza_DataSet.NewRow();
this.CK_Baza_DataSet.AddRow(dr);

vec:
NDRT.CK_Baza_DataSet.Data.DataRow dr = new NDRT.CK_Baza_DataSet.Data.NewRow();
this.CK_Baza_DataSet.Data.AddRow(dr);
jer se tabela u okviru dataseta naziva "Data".

Dakle, napravim novi row po schemi dataseta, pa ga posle dodam u tabelu data. Sad vise nije cudno, jelda? :)

To medjutim nije problem. Sad sam ga potpuno izolovao. Naime, forma ima nekoliko bindovanih textboxova i jednu onu tab kontrolu sa nekoliko tabova koji su puni raznih checkboxova i textboxova.

!!!
Kada dodam novi red na gore navedeni nacin i snimim podatke u bez mijenjanja podataka u tab kontroli, pa onda promijenim nesto na tab kontroli i ponovo pokusam snimit podatke u bazu prijavi concurrency error (affected 0 rows, expected 1).

A kada promijenim i nesto na tab kontroli prije prvog snimanja u bazu, greska nema!!!!
!!!

Fatao sam i greske prilikom update-a, dataset.HasErrors je true, ali nijedan od njegovih rows nema greska. Izludje me.

Koliko ja vidim tableadapter nema nikakve dogadjaje, niti mu mogu vidjet kako izgledaju command objekti za update nazad u bazu, pa prosto ne znam sto da radim.
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
85.94.114.*



Profil

icon Re: Problem prilikom update-a29.09.2007. u 15:55 - pre 201 meseci
Evo izgleda rjesenje problema, ako je to bio problem uopste.

Dakle, kada sam default value svih check boxova u dataset schemi umjesto <DBNull> postavio na false (true), vise ne prijevljuje gresku. Kada bar jedan od tih check boxova ostavim po defaultu na <DBNull> opet pocne da prijavljuje gresku. Uf.

Glupost, bug, sto li je...
 
Odgovor na temu

[es] :: .NET :: Problem prilikom update-a

[ Pregleda: 1730 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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