[ Mikelly @ 28.09.2007. 19:31 ] @
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.
[ mmix @ 28.09.2007. 19:54 ] @
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.
[ Mikelly @ 29.09.2007. 13:54 ] @
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.
[ Mikelly @ 29.09.2007. 15:55 ] @
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...