Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.258 pregleda

Najnovija ↓

Problem prilikom update-a 28.09.2007. u 20:31 · pre 232 meseca #1
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.
Re: Problem prilikom update-a 28.09.2007. u 20:54 · pre 232 meseca #2
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.
Potpis
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ć
Re: Problem prilikom update-a 29.09.2007. u 14:54 · pre 232 meseca #3
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.
Re: Problem prilikom update-a 29.09.2007. u 16:55 · pre 232 meseca #4
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...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme