|
[ SLOJ.1973 @ 04.01.2012. 22:09 ] @
| Ljudi,ima li neko ideju zašto ovaj kod ne valja,tj zašto error handler se preskače i izbacuje se poruka accessova,umesto moja.Samo da oobjasnim da pokušavam da obrišem neki rekord koji je nemoguće obrisati,jer je povezan sa drugom tabelom i već je u upotrebi.Znači nije problem, što ne mogu da ga obrišem,već je problem presretanja accessove poruke.Da napomenem da samm probao i preko recordset-a i na formin error dodadavao error handler,ali bezuspešno,uvek se izbaci accessova poruka. Code: Private Sub cmdBrisi_Click()
On Error GoTo Err_cmdBrisi_Click:
If MsgBox("Da li zaista zelite da obrisete podatak?", vbYesNo, "STOP-TRAJNO GUBLJENJE PODATKA") = vbYes Then
DoCmd.SetWarnings False
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.SetWarnings True
MsgBox "Podatak obrisan!"
Else
MsgBox "Odustali ste u pravo vreme.", vbExclamation, "NEMA BRISANJA"
End If
Exit_cmdBrisi_Click:
Exit Sub
Err_cmdBrisi_Click:
Select Case err.Number
Case 3200
MsgBox "PODATAK JE U UPOTREBI,I NEMOGUCE GA JE OBRISATI", vbCritical, "STOP-NEPOZELJNO BRISANJE"
Case 2046
MsgBox "PODATAK NE POSTOJI", vbCritical, "STOP-NEPOSTOJECI PODATAK"
Case 3396
MsgBox "PODATAK JE U UPOTREBI,I NEMOGUCE GA JE OBRISATI", vbCritical, "STOP-NEPOZELJNO BRISANJE"
Case Else
MsgBox err.Description & err.Number
End Select
Resume Exit_cmdBrisi_Click
End Sub
 |
[ Getsbi @ 05.01.2012. 06:47 ] @
Ja to radim ovako:
Code: Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
If MsgBox("Dali ste sigurni da zelite da obrisete zapis", vbYesNo, "Paznja") = vbNo Then
Cancel = True
Else
Response = acDataErrContinue
End If
End Sub
Ili na početku procedure staviti DoCmd.SetWarnings False. Na kraju procedure ponovo uključiti
Access poruke sa DoCmd.SetWarnings True. Ukloniti se može samo na nivou sistema:
Tools -> Options ->Edit/Find ->Confirm (Access 2003)
Bitan je odabir događaja ili Options postavke.
[ SLOJ.1973 @ 05.01.2012. 08:51 ] @
Getsbi,hvala na odgovoru,ja vec imam na beforedelconfirm taj kod ,ali nista.Sada sam pokusao na drugom kompu i ovde je sve ok.Ne znam,videcu sta je problem.Hvala jos jednom.
[ Zidar @ 05.01.2012. 16:39 ] @
Error handler ne javlja gresku jer greska nije u kodu. Kod poziva menije i iz menija izdaje komendu za brisanje. Tu nema nista sporno. Onog momenta kad se izda komanda za brisanje, kod je zavrsio i nema greske u kodu. Grseka nastaje zbog uslova integriteta. Istu grsku bi dobio kad bi rucno pokusao da obrsise taj rekord. uslovi integritetta sprecavaju brisanje, poruku ti javlja baz, JET engine, jer je greska tamo otkrivena.
Nacin da ovo kontrolises jeste upotreba forminog Error eventa. U helpu je nakd bio primer kako se to radi. Primer u helpu obradjuje inesrtovanje u tabelu i poruke o duplikatima i foreign key narusavanjima. Potrebno je znati kod greske i onda je tamo presresti. U tvom slucaju, kod greske je 3200 i treba je presresti u formoin Error eventu. Probaj da nadjes to u helpu ili na Google. Ovde na forumu sam bar dva puta objasnajvao kako ovo radi i dao primere koda. Ja naravno ne umem da nadjem te stare teme, Getsbi je mnogo bolji u tome, a mozda nesto ima i u bazi znanja.
Ako ti ne uspe da nadjes, javi s eponovo, pa cu da iskopam neki primer lokano kod mene.
[ SLOJ.1973 @ 05.01.2012. 18:32 ] @
Hvala Zidar,ali ja imam formin error handler-pogledaj sliku.Ono što me zabrinjava je to što na drugom kompu sve radi ok,a kod mene zakazuje i izbacuje grešku,koja niti je formina niti iz koda.A evo sada imam i ovde: http://www.elitesecurity.org/t...e-isn-enough-memory-to-perform grešku.Nešto tu ne valja,ali sam ja jako umoran,pa verovatno ne vidim.

[ banem @ 05.01.2012. 19:15 ] @
Aj pošalji tu formu gde ne radi error handler. Nešto si garant zaboravio u VBA. Plus tabele (mogu i prazne).
[ Getsbi @ 05.01.2012. 19:20 ] @
Evo teme gde je razmatran Error handler i njegova pravilna upotreba: http://www.elitesecurity.org/t77220-0#493236
Mada se čini da je problem negde drugde, a ne u presretanju grešaka, pogotovo što na jednom kompu radi, na drugom ne.
[ SLOJ.1973 @ 05.01.2012. 20:05 ] @
Evo ,kod mene znači izbacuje i u novoj bazi istu grešku,zaobilazeći sve error handlere.
[ banem @ 05.01.2012. 20:18 ] @
Kao što sam i mislio. :)
Pošto na tvom ne radi, a na drugom radi, prvo što sam pomislio je da si na svom računaru isključio Tools > Options > Edit/Find > Confirm.
Kada je to isključeno, onda Access "ne podiže" grešku, pa Error Handler nema šta da presretne. Uključi te opcije i program radi.
[ SLOJ.1973 @ 05.01.2012. 20:25 ] @
Već je bilo uključeno:

[ banem @ 05.01.2012. 20:29 ] @
Kod mene se tako ponaša samo kad su te opcije isključene(?) Inače radi.
[ banem @ 05.01.2012. 20:31 ] @
Jedino što mi pada na pamet je da pre komande za brisanje proveriš da li postoji po ID zapis u vezanoj tabeli. Tek ako ne postoji pustiš program na db.Execute.
[ SLOJ.1973 @ 05.01.2012. 20:32 ] @
Kod mene ne radi ni ostala dugmad,znači dugme za prelazak na sledeći rekord da kada dođe do poslednjeg,trebalo bi da izbaci moju poruku o grešci,a on izbacuje svoju.Kod ostalih formi,koje imaju sličnu komandnu dugmad,sa identičnim error handlerom rade ok.
[ SLOJ.1973 @ 05.01.2012. 20:35 ] @
Ma sve je to ok,to mogu da odradim,ali me nervira što na drugom kompu radi besprekorno,a kod mene ne!!! Hoću da znam ZAŠTO!
Evo šta sesada dešava:Kada sa SHIFT-om uđem u bazu-radi,kada uđem bez shift-a( vidljiv je samo onaj famozni meni:licni) neće.
[ banem @ 05.01.2012. 20:45 ] @
To liči na neka podešavanja koja su na nivou instalacije kao one potvrde. Kad ih isključim i kod mene ne radi. E sad šta je tačno, vrag će ga znati. Zato su Amerikanci smislili reč "workaround". :)
Prođi kroz sve opcije pa pogledaj da li su na default, možda si još nešto menjao što ima veze.
[ SLOJ.1973 @ 10.01.2012. 13:11 ] @
Samo da dodam da sam resio gore navedeni problem,tako sto sam reinstalirao msoffice.Znaci reseno je,problem je bio u office-u.Hvala svima,koji su se trudili da mi pomognu.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|