[ Valerij Zajcev @ 23.12.2007. 13:57 ] @
Sta god kuc'o na google uvak dobijem sve za VB.NET, sta hocu da postignem imam primary key u tabeli i kada se dogodi da se key duplira ono mi obali program? Postoji li neki tutorijal za upotrebu izuzetaka (ako postoji)?
[ Aleksandar Vasic @ 23.12.2007. 14:16 ] @
pa probaj da skines primary key i podesi opciju Indexed na Yes(Duplicates OK)
[ Shadowed @ 23.12.2007. 14:16 ] @
Nemas exceptions u vb6. Imas dve mogucnosti - On Error Resume Next - ignorise liniju koja dovodi do greske i prelazi na sledecu; On Error GoTo <label> - isto kao prethodno ali skace na zadato mesto. Posle toga iz Err objekta dobijas ID greske i mozda jos neke stvari (ne secam se dalje).

Edit: U poslednjih par tema sam par puta primatio da ti trebaju stvari kojih ima u vb.net-u ali nema u vb6. Uz rizik da me stvarno najure odavde.. Sto ne radis u vb.net-u umesto 6ice?
[ Valerij Zajcev @ 23.12.2007. 14:22 ] @
Citat:

Edit: U poslednjih par tema sam par puta primatio da ti trebaju stvari kojih ima u vb.net-u ali nema u vb6. Uz rizik da me stvarno najure odavde.. Sto ne radis u vb.net-u umesto 6ice?

Ja u stvari radim u .NET-u c#, ali moram da radim vb6 jer mi seminarski zahteva tako, a cilj seminarskog je da budem samouk :D, a nikada do sad nisam radio sa bazama.
btw probacu ovo sa goto label on error pa cu da javim rezultate :)
[ Valerij Zajcev @ 23.12.2007. 18:59 ] @
Kako ovo komplikovano radi :), ovo sa goto label je izgleda ono sto mi treba ali pazi ovo: Ja stavim "on error goto prikaziGresku" e a taj label ne mogu da stavim u posebnu funkciju jer onda je ovaj ne vidi, a ako je stavim iza koda na kraj u tom subu onda i kada izvrsi tacno operaciju opet prikaze poruku o gresci, a ako je stavim iznad onda prvo kaze da sam gresan :D
Problem je sto u svakom slucaju izvrsava kod iz label-a
Code:

' -------------------------------------------------------------------------------------
' dodavanje novih kontakata u bazu
'
' -------------------------------------------------------------------------------------
    If Text9.Text = "" Then
        MsgBox ("Nista nije naznaceno")
    Else
    With rsImenik
    On Error GoTo DesilaSeGreska
        .AddNew
            !ID = UCase(CInt(Text9.Text))
            !IME = UCase(Text10.Text)
            !PREZIME = UCase(Text11.Text)
            !TELFAX = UCase(Text12.Text)
            !MOB = UCase(Text13.Text)
            !ADRESA = UCase(Text14.Text)
            !GRAD = UCase(Text15.Text)
        .Update
        Text9.Text = ""
        Text10.Text = ""
        Text11.Text = ""
        Text12.Text = ""
        Text13.Text = ""
        Text14.Text = ""
        Text15.Text = ""
        MsgBox ("Novi kontakt je uspesno dodat")
            lstImenik.Clear
            FillTable
            ' exception handler
DesilaSeGreska:
                                MsgBox ("error occured")
             'end exception handler
    End With
    End If
[ Marko_L @ 23.12.2007. 19:46 ] @
Dodaj Exit Sub pre DesilaSeGreska:
Citat:
Uz rizik da me stvarno najure odavde.. Sto ne radis u vb.net-u umesto 6ice?

M'rš napolje :) Sve ćeš nam mušterije rasterati :)
[ Aleksandar Ružičić @ 24.12.2007. 00:36 ] @
Citat:
Marko_L: M'rš napolje Sve ćeš nam mušterije rasterati

neka mu ovo bude upozorenje pred iskljucenje
[ Shadowed @ 24.12.2007. 01:45 ] @
Eto! Pa, tacno sam znao.
Al', je l' vidite da sam lepo nanjusio .net :)

BTW, ovo sa skakanjem tamo-amo i iskakanjem da se izbegne izvrsavanje me jako podseca na assembly :)
[ Aleksandar Ružičić @ 24.12.2007. 03:25 ] @
pa sta fali assemblyju? ;)
[ Shadowed @ 24.12.2007. 11:10 ] @
Nista :)
[ Aleksandar Ružičić @ 24.12.2007. 12:09 ] @
pa onda nista ne fali in Goto i labelama, zar ne?


p.s. al idemo u offtopic... sve cu da nas pobrisem
[ Shadowed @ 24.12.2007. 13:30 ] @
Nisam ni rekao da im fali nesto.
Al' sad kazem.
Nista im ne fali u assembly-u, ali su neprakticni u visim jezicima (kao sto je vb6, jelde) jer stvaraju necitljiv kod (asm ionako ne moze biti necitljiviji )

Edit: Ma ostavi, na glavno pitanje je ionako ogovoreno, a mozda nekom bude i zanimljivo
[ Aleksandar Ružičić @ 24.12.2007. 13:51 ] @
pa ne znam koliko je necitljiv kod sa goto i labelama, ako se "pazljivo" koriste, tj sto je ovaj kod:
Code:

Try
  ' ... ovde neki pametan kod koji ce da baci exception
Catch o As Object ' nisam siguran dal se 'vako pisu exceptioni u vb.net ali ovako se pisu u obasicu ;)
   MsgBox o.toString
End Try

citljiviji od ovoga:
Code:

On Error Goto catch
  '  ... ovde neki pametan kod koji ce da digne gresku
Goto end_try
catch:
   MsgBox Err.Description
   Err.Clear
end_try:

?
[ Shadowed @ 24.12.2007. 15:02 ] @
Tako napisano nije velika razlika (mada i tu imas ceo red umesto keyword-a, al' ajd').
Medjutim, Try...Catch...Finally (zaboravio si Finally ) ima vise mogucnosti.
Jedna je to sto nije o as Object nego moze biti Exception class ili neka nasledjena iz nje (potpuno custom, mozes dodati sta hoces u tu klasu i popuniti je potrebnim podacima tamo gde se izvrsava throw exception). Znaci, moze sadrzati mnogo vise (i to custom) podataka o kresKi.
Pored toga, mozes imati vise od jednog Catch pri cemu svaki hvata jedan tip greske pa se poziva onaj odgovarajuci blok. Primer:
Code:

Try
    System.IO.File.Copy(SourcePath, DestinationPath)
Catch e As PathTooLongException
    msgbox("Putanja je preduga")
Catch e As ArgumentException
    MsgBox("Argument " & e.ParamName & " is not valid.")
Catch e As FileNotFoundException
    MsgBox("File " & e.FileName & " is not found.")
End Try


Sumirano (ali ne i ograniceno na):
1. Imas ceo red On Error GoTo <label> umesto reci Try. Pri tome slican red imas i sa resume next pa se ne moze samo preleteti pogledom
2. Nije standardizovano (al' ajd' moglo bi da bude (al' nije ))
3. Multiple Catch
4. Fleksibilniji (custom) error objekat.


BTW, do kad traje On Error komanda? Recimo u tom tvom primeru, nece li se i negde kasnije, posle end_try: labele vratiti na catch: labelu ako dodje do greske?
[ Aleksandar Ružičić @ 24.12.2007. 15:31 ] @
Citat:
Shadowed: Tako napisano nije velika razlika (mada i tu imas ceo red umesto keyword-a, al' ajd').
Medjutim, Try...Catch...Finally (zaboravio si Finally ) ima vise mogucnosti.
Jedna je to sto nije o as Object nego moze biti Exception class ili neka nasledjena iz nje (potpuno custom, mozes dodati sta hoces u tu klasu i popuniti je potrebnim podacima tamo gde se izvrsava throw exception). Znaci, moze sadrzati mnogo vise (i to custom) podataka o kresKi.
Pored toga, mozes imati vise od jednog Catch pri cemu svaki hvata jedan tip greske pa se poziva onaj odgovarajuci blok. Primer:
Code:

Try
    System.IO.File.Copy(SourcePath, DestinationPath)
Catch e As PathTooLongException
    msgbox("Putanja je preduga")
Catch e As ArgumentException
    MsgBox("Argument " & e.ParamName & " is not valid.")
Catch e As FileNotFoundException
    MsgBox("File " & e.FileName & " is not found.")
End Try


1. Pa... postoje addin-ovi kao sto je mz tools i mozes lako da napravis "templejt" i da mu dodelis hot key, tako da cak manje "kucas" nego Try
2. evo ja cu da ga standardizujem ako nije vec neko
3. moguce naravno:
Code:

catch:
   Select Case Err.Number
      Case 123:
            ' ...
      Case 666:
            ' ...
   End Select
   Err.Clear



4. pa i to je moguce
- napravis cException klasu, na vrhu forme deklarises Dim exception As New cException,
- mozes lako da napravis da klasi dinamimcki dodajes propertije, i funkcije sto da ne (pointeri.. )
- onda pozoves throw f-ju: ex.Throw "My Exception thrown" (gde Throw poziva Err.Raise da bi ga uhvatio On Error)

e sad, sto se tice finalyja, moze i to da se simulira, ali uz malo vise gimnastike

Citat:

BTW, do kad traje On Error komanda? Recimo u tom tvom primeru, nece li se i negde kasnije, posle end_try: labele vratiti na catch: labelu ako dodje do greske?

cim se digne greska, poziva se prvi On Error koji je "iznad" (to ne mora da bude On Error u proceduri) linije na kojoj se desila greska.
sto se tice onog mog primera, da ako posle end_try se digne greska bice pozvan taj catch, ali nista nas ne sprecava da imamo vise On Error-a u jednoj proceduri:
Code:

On Error Goto catch1
  '  ... ovde neki pametan kod koji ce da digne gresku
Goto end_try1
catch1:
   MsgBox Err.Description
   Err.Clear
end_try1:

' ...

On Error Goto catch2
  '  ... ovde neki pametan kod koji ce da digne gresku
Goto end_try2
catch2:
   MsgBox Err.Description
   Err.Clear
end_try2:


Citat:
Shadowed: Jedna je to sto nije o as Object nego moze biti Exception class ili neka nasledjena iz nje (potpuno custom, mozes dodati sta hoces u tu klasu i popuniti je potrebnim podacima tamo gde se izvrsava throw exception).

e vidis u obasicu moze da bude bilo koji objekat, ne samo onaj koji je izveden iz exception klase (ako sam te dobro razumeo, u vb.net-u moze da se hvataju samo objekti koji su izvedeni iz exception klase? nisam siguran da sam te razumeo, jer ne znam sto bi ovi iz ms-a ogranicili tako)


sto se tice obasica, ne pitaj nista, ne smem nista da ti kazem. tj ako ti kazem moracu da te ubijem
[ Shadowed @ 24.12.2007. 15:39 ] @
OK, i hoces da kazes da sve to nije komplikovanije od try-catch-finally? Ma daj :)
[ Aleksandar Ružičić @ 24.12.2007. 18:09 ] @
nikad nisam rekao da to nije komplikovanije, jer jeste :)

samo kazem da ne mora da bude necitljiv kod sa Goto naredbama :)
[ Shadowed @ 24.12.2007. 18:33 ] @
OK, OK, necitljiviji :)