[ sparc @ 21.03.2011. 09:02 ] @
Pocetnik sam u razvoju VB desktop aplikacija i muci me obrada greske
prilikom upisa u bazu. Koristim details formu sa datagridview-om.
Za data grid view imam zabranu azuriranja, dodavanja i brisanja, za
upis podataka u bazu koristim standardnu try catch proceduru.

Try
Me.Validate()
Me.DevizeBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DevizeDataSet)
Me.DevizaTextBox.Focus()
Catch ex As Exception
MsgBox(ex.Message)
Me.DevizaTextBox.Focus()
End Try
Ova procedura izbaci standardnu poruku na engleskom sa nazivom
kolone u kojoj je greska, pri cemu ne mogu da ocekujem od svakog
korisnika da zna engleski.

U tabeli "Deviza" u bazi imam validaciju nad poljem "Naziv"koje ne
dozvoljava da vrednost bude null, odnosno prazno.
Znam kako to da uradim kroz formu. Medjutim, zeleo bih da
prilikom pojave greske koja dolazi kod upisa u bazu da ispitam u kojoj se
koloni javlja greska (kolonama) i da korisniku pored text polja u
formi postavim znak gde je greska.
Hvala unapred na pomoci.
[ Dejan Carić @ 22.03.2011. 00:14 ] @
Citat:
sparc:
Ova procedura izbaci standardnu poruku na engleskom sa nazivom
kolone u kojoj je greska, pri cemu ne mogu da ocekujem od svakog
korisnika da zna engleski.

Korisniku se obično izbaci neka razumljiva poruka: Došlo je do greške prilikom...
A detalji greške se loguju kako bi osoba zadužena za razvoj/održavanje znala uzrok greške.
Umesto da razvijaš svoj sistem logovanja, možeš pogledati NLog.

Citat:
sparc:Medjutim, zeleo bih da
prilikom pojave greske koja dolazi kod upisa u bazu da ispitam u kojoj se
koloni javlja greska (kolonama) i da korisniku pored text polja u
formi postavim znak gde je greska.
Hvala unapred na pomoci.

Grešku bi trebalo obraditi pre upisa u bazu. Kada se greška dogodi prilikom upisa u bazu, tada je teško ili gotovo nemoguće pozicionirati korisnika na problematičnu kolonu jer greška može nastati iz više razloga:

- time out exception
- loše formatiran upit (ako se ne koristi neki ORM)
- podaci su loše formatirani
itd.

Da bi korisnika pozicionirao na problematičnu kolonu, potrebno je isparsirati tekst poruke, utvrditi uzrok...

Za validaciju podataka unutar DataGridView kontrole, možeš pogledati ovaj primer sa MSDN-a.
Ukoliko za data source koristiš kolekciju nekih tvojih objekata, a ne data set / data table, možeš pogledati Fluent Validation framework koji će ti olakšati proces pisanja validacije.