[ sotsprodigy @ 27.05.2007. 17:12 ] @
| Imam problem sa prenosom podataka iz data seta u tabelu.Radim u C# .net 2005 i problem nastaje zato sto
sve radi dok je pokrenuta aplikacija ali nikada mi ne updejtuje tabelu.Radim sa dbnavigatorom koji je povezan sa datasetom
i sve radi(dodavanja, brisanje, azuriranje) ali nikako mi ne vrsi prenos u odredjenu tabelu.
recimo da ne izvrsava ovaj deo koda.
OLEDBadapter.uptate(dataset);
Sta ja zaboravljam? |
[ _v!rus_ @ 27.05.2007. 18:21 ] @
Kako mislis "recimo da ne izvrsava OLEDBAdapter.Update"? Dobijes Exception? Kada pozivas Update? daj malo vise infoa... :)
[ sotsprodigy @ 28.05.2007. 09:11 ] @
Vidi u medjuvremenu sam ispitao i on ne baca exception na update.Ali evo do kod sam zakljucka doso.
Postavio sam datagrid da bih mogao da vidim sta on ustvari radi i da li dodaje u tabelu i iznenadio se.
Meni upis hoce da radi jedino kada u datagridu izvresim selekciju nekog drugog reda tj. reda ispod koji je prazan(znas kako vec izgleda datagrid).Sta ja ustvari to uradim.Koja je to funkcija koja se tako poziva.Ako imas neki kod za povezivanje sa bazom ili primercic sa bilo kakvom bazom pusti mi na mail, da vidim gde ja to gresim.
[ spartak @ 28.05.2007. 10:44 ] @
DataSource na koji ti je taj DataGrid povezan ne ocita promenu do god je red u Edit modu. Kad napustis taj rekord u bindovanoj tabeli se oznaci kao izmenjen i tek onda hoce da ga posalje u bazu.
Ne mogu sad iz glave da se setim kako sam to resavao, ali recimo kada korisnik klikne na save odradi se na DataGrid EndEdit ili tako nesto slicno.
[ mmix @ 28.05.2007. 13:44 ] @
Ako si radio binding preko BindingSource komponente (a nadam se da jesi) pozovi njen EndEdit metod pre Update-a.
[ sotsprodigy @ 28.05.2007. 16:41 ] @
Hvala resio sam, bilo je u pitanju ovo sa binding-om i endedit.Sad sljaka.
[ sotsprodigy @ 29.05.2007. 09:05 ] @
E ovo je neverovatno, sad nece da radi brisanje.Evo koda koji se izvrsava:
bindingNavigatorDeleteItem.Visible = true;
bindingNavigatorDeleteItem.PerformClick();
bindingNavigatorDeleteItem.Visible = false;
try
{
this.zaposleniBindingSource.EndEdit();
DataSet.zaposleni.AcceptChanges();
this.zaposleniTableAdapter.Update(this.DataSet.zaposleni);
}
catch
{
MessageBox.Show("Greska prilikom updatate");
}
I ovo brise iz dataseta, ali ponovo mi ne vraca u tabelu.U cemu je sad problem?Ako ko ima primercic na kome ima brisanje, i azuriranje neka mi pusta ma mail molim.
[ dusty @ 29.05.2007. 09:20 ] @
AccetpChanges "ponistava" diffgram dataset-a, tako da Update metoda nema sta da update-uje. Met'i ga ispod poziva na Update metodu.
[ sotsprodigy @ 05.06.2007. 09:14 ] @
E vidite koji mi se problem javlja sad.Imam sledeci kod:
try
{
bindinsource.endedit();
tableadapter.update(dataset);
}
catch
{
obrada;
}
ovaj kod mi radi za 10 prethodnih tabela za upis u tabelu, ali pravi mi problem kod jedne.
Ubaci prvi red ok, ali sa svakim sledecim baca izuzetak.Sta koze da bude u pitanju.Pregledao sam sve i nista mi nije jasno.U cemu moze da bude problem.
zaboravio sam da dodam da puca na liniju bindingsource.endedit()
[Ovu poruku je menjao sotsprodigy dana 05.06.2007. u 14:12 GMT+1]
[ mmix @ 06.06.2007. 15:09 ] @
Nisi okacio koji exception si dobio, postoji vise razloga, a najverovatnije na tabeli na serveru imas neki constraint koji ti nije preslikan u dataset tabelu pa prolazi u kodu ali puca pri pustanju na server.
Btw, apropo AcceptChanges, nemojte zvati taj metod posle datadapter.Update(). Ako je adapter isprocesirao red on ce sam uraditi acceptchanges za taj red. Ako iz bilo kog razloga ne uspe da isprocesira taj red (npr fali delete komanda), taj red ce ostati u added/modified/deleted statusu i moze se naknadno resiti. Ako pozovete AcceptChanges, efektivno "tvrdite" da su se promene u bazi desile iako nisu i dobijate DataSet koji vise ne odgovara stanju u bazi.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|