[ Predrag Supurovic @ 24.02.2011. 17:43 ] @
U ddizajneru samnapravio DataSource i na njemu tabelu koju sam povukao iz baze.

Javlja mi seproblem na formi, kada nakon editoa izvršim DataAdapter.Update (DataTable) iskoči FormatException tvrdeći da foramt nekog podatak nije ispravan.

Pretpsotavljam da je problem u tipovima ili već čemu kolona koje je dizajner napravio. Naime, ista greška se javljai ako ja samo uradim BeginUpdate() - endUpdate() bez ikakvog stvarnog menjanja podataka. Javlja se ista greška.

Kad au dizajneru obrišem sve kolone osim primarnog ključa i tada uradim edit sloga, ne iskače exception. Primarni ključ jestring polje.

U tabeli imam nekoliko Booblean kolona koje je dizajner prepoznao kao integer. To sam ručno izmenio i podesio da je defaultValue boolean vrednost. Takođe sam za sva Integer polja podesio numerilke default vrednsoti umesto dbNull. Međutim to nije pomoglo.

Postoji li neki način da izdebagujem na kom se polju javlja ovaj Exception, pošto samException ne daje ama baš nikakvu korisnu informaciju?

[ Predrag Supurovic @ 24.02.2011. 17:51 ] @
Sumnja na integer i boolean polja je otpala. Obrisao sam iz tabele sva polja koja nisu string i isto se desava...
[ mmix @ 24.02.2011. 21:06 ] @
ako koristis dataset izvuci greske iz tabele

Code (csharp):


if (ds.Table1.HasErrors)
{
  foreach (DataRow myRow in ds.Table1.GetErrors())
  {
    Console.WriteLine(" Error = " + myRow.RowError + "\n");
  }
}
[ pl4stik @ 25.02.2011. 19:42 ] @
Nemam nesto iskustva sa client programiranjima ali da probam...

Znaci, napravio si dataset i u njemu je jedna tabela koju kad obelezis dobijesh padajuci meni sa strane koji kad otvorish ti daje mogucnost za izbor grid ili details. Kada si odabrao nesto od ta dva i prevuko na formu dobio si i BindingNavigator sa disketa iconom, run i dobijes FormatException ?

Pri dizajniranju data seta dal radi update i ako tu radi, a na formi ne radi !!! Posalji mi tu\takvu tabelu ovamo

Ako si code-irao postavi isti...

BTW. Proveri filmove na temu databindinga, npr. http://windowsclient.net/learn/video.aspx?v=108085 jer tehnike mapiranja raznih datasourc-eva u neki od orm-a dataset/mf/linq je mnogo bitna stvar jer dobijesh full CRUD. Tvoj problem je sto ne koristish IDE na nacin na koji ti pokazuju oni sto ga pravili jbg Proveri one filmove bice ti mnogo jasnije ...

Have fun
[ Predrag Supurovic @ 28.02.2011. 14:23 ] @
Citat:
mmix: ako koristis dataset izvuci greske iz tabele

Code (csharp):


if (ds.Table1.HasErrors)
{
  foreach (DataRow myRow in ds.Table1.GetErrors())
  {
    Console.WriteLine(" Error = " + myRow.RowError + "\n");
  }
}



Ne pomaže. Ovo ne prijavljuje nikakvu grešku, ali idalje, na update iskoči FormatException.


Citat:
pl4stik:
Znaci, napravio si dataset i u njemu je jedna tabela koju kad obelezis dobijesh padajuci meni sa strane koji kad otvorish ti daje mogucnost za izbor grid ili details. Kada si odabrao nesto od ta dva i prevuko na formu dobio si i BindingNavigator sa disketa iconom, run i dobijes FormatException ?


Nešto slično. Napravio sam u Dizajneru DataSet ali ga ne korsitim direktno sa formi nego ga instanciram u svojojklasi a onda pre prikazivanaj forme, ručno povežem data kontrole sa bindingsource. no, u ovom slučaju sam sve data kontrole isključio iz priče i tooptriliek izgleda ovako:

Code:

            DataRow mRow = ((DataRowView)dm.bs_appconfig.Current).Row;

            // ovde promenim status sloga kao da je menjan
            mRow.BeginEdit();
            mRow.EndEdit();

            dm.appconfigTableAdapter.Update(dm.ds.appconfig);


ovde je dm moja klasa koja kao properti sadrži ds koji je u stvari instancirani DataSet napravljen iz dizajnera.

To sam tako uradio jer mi treba da kada je program vec aktivan promenim konekciju ka bazi (to smo pričali udrugoj temi). dm u stvari samo instancira DataSet a onda umetne svoju konekciju umesto one koja ja napravljena u dizajneru. Pored toga, dm kreira i BindigSource za svaku tabelu i onda taj BindongSource korsitim da povezujem data konktore u korisnickom interfejsu.

Citat:

Pri dizajniranju data seta dal radi update i ako tu radi, a na formi ne radi !!! Posalji mi tu\takvu tabelu ovamo :)


Pravo da ti kažem i o tome sam razmišljao, da napravim primer koji će biti manji i samo sa jednom tabelom (ovaj DataSource ceo je poveliki, ima dosta tabela) pa damoe da se probao. dodatna komplikacija je što je ovo što radim na Mobile pratformu i moguce je da je problem specifičan za nju.

Citat:

BTW. Proveri filmove na temu databindinga, npr. http://windowsclient.net/learn/video.aspx?v=108085 jer tehnike mapiranja raznih datasourc-eva u neki od orm-a dataset/mf/linq je mnogo bitna stvar jer dobijesh full CRUD. Tvoj problem je sto ne koristish IDE na nacin na koji ti pokazuju oni sto ga pravili jbg :) Proveri one filmove bice ti mnogo jasnije ...


Evo downloaduje se :)



[Ovu poruku je menjao Predrag Supurovic dana 28.02.2011. u 16:02 GMT+1]
[ pl4stik @ 28.02.2011. 15:23 ] @
Mobile kazes

Probaj onda ovde
[ Predrag Supurovic @ 28.02.2011. 16:14 ] @
Evo u prilogu pojednostavljen primer gde se pojavljuje greska

http://www.2shared.com/file/fEpp1_b9/dbtesstdbtestpda1.html (2 MB)

Pošto aplikacija koristi SQLite bazu, treba u Project / Add Reference dodati System.Data.SQLite

[ pl4stik @ 01.03.2011. 06:38 ] @
Ovde je problem sto DataSet ne definise dobro parametre za update tj. i sa SQLite kao i sa Accessom dodaje i primarni kljuc kao parametar za update. Sinoc sam proverio ali sam sad zaboravio da ponesem projekat pa cu popodne da ga okacim (doduse malo skracen upit zbog preglednosti ) ...

Elem, kao sto mozes procitati ovde predlozio bih ti desni taster na appconfigTableAdapter->Add Query->Next->Update->Next i tu generises update upit (i prepravish ga zbog pk).

[ Predrag Supurovic @ 01.03.2011. 12:22 ] @
Uspeo sam nocas to da resim. Zakljucio sam da nesto nije u redu sa SQLite DLL-om za Compact platformu, jer istu stvar sam napravio i za desktop i to radi bez problema.

Prepravio sam UPDATE (tj napisao ga sa jednostavnim WHERE upitom) i tad je proradilo.