|
[ boris_kp @ 08.06.2006. 15:42 ] @
| Pozdravljeni
Nasao sam ovaj kod za javljanje greske ako nisu upisani podaci. Kod odradi perfektno i javi mi da fale podaci ALI poslje toga se pojavi accessova poruka o gresci dali zelim upisati podatke.
MOJE PITANJE GLASI KAKO DA SE RIJESIM ACCESSOVE PORUKE
Gledao sam na forumu i na netu rad sa javljanjem gresaka ali mi nije jasno pa bi molio da mi kod ovog koda pomognete jer zelim da savladam to podrucje oko javljanja gresaka.
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Place an asterisk (*) in the Tag Property of the text boxes you wish to validate.
'Then in the BeforeUpdate Event of the form, copy/paste the following:
Dim msg As String, Style As Integer, Title As String
Dim nl As String, ctl As Control
nl = vbNewLine & vbNewLine
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
If ctl.Tag = "*" And Trim(ctl & "") = "" Then
msg = "Data Required for '" & ctl.Name & "' field!" & nl & _
"You can't save this record until this data is provided!" & nl & _
"Enter the data and try again . . . "
Style = vbCritical + vbOKOnly
Title = "Required Data..."
MsgBox msg, Style, Title
ctl.SetFocus
Cancel = True
Exit For
End If
End If
Next
End Sub
Puno pozdrava !!! |
[ fahre @ 09.06.2006. 11:45 ] @
I ja imam slican problem.
Naime. accessovim wizardom sam definisao combo box na jednoj formi kojim vrsim pretragu podataka jedne tabele.
U event-u on NotinlList sam definisao slijedeci kod:
Private Sub cmbPretrazivac_NotInList(NewData As String, Response As Integer)
If MsgBox("Navedeni prijevoznik nije na listi. Da li zelite da ga unesete?", vbYesNo, "upozorenje") = vbYes Then
DoCmd.OpenForm "unos novog prijevoznika"
Else
Me.cmbPretrazivac = Null
End If
End Sub
I sve radi kako treba, medjutim poslije moje poruke pojavi se i Access-ova poruka o gresci.
[ Zidar @ 09.06.2006. 13:47 ] @
Ako stavite Error handling kod na neki Accessov event, javce vam gresku samo ako dodje do greke u kodu, ili greske koja izaziva pucanje koda (deljenje sa nulom na primer). Ako unesete duplikat, to ne mora da izazove gresku u kodu, pa vas error handler nece to uvatiti. isto se desava ako probate da unesete vrednost koja nije u validacionoj tabeli, a postoji relacija madju tabelama koja dozvoljava samo vrednosti iz validacione tabele (FOREIGN KEY). Dakle, error kod nece da radi, jer tehnicki i nema greske. Access javi poruku o gresci kad podatak pokusa da udje u tabelu i to nema nikakve veze sa formom. Otvorite tabelu direktno i pokusajte namerno da unesete duplikat. Dobicete poruku o gresci od Accessa, istu koju vidite i na formu.
Resenje je da se greske uhvate pomocu forminog Error eventa. pazite, nije error handler u nekom eventu, nego bas Event na formi, koji se zove OnError isli slicno. Otvorite Form properties, pa Events i negde pri dnu videcete Error event. Trazite HELP za taj event i vidite sta se desava. Access 97 je imao lepe primere, nisam siguran da novije verzije imaju tako lep help. A pisali smo i na forumu o tome, mozda ima i u Bazi znanja. Uglavno, proucite Form Error event. Tu se hvataju greske koje nisu run-time, nego tipa 'duplikat', 'referential integrity' i slicno, sve ono sto s edesava na nivou tabela, a ne na nivou forme.
[ izonic @ 09.06.2006. 21:34 ] @
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Ovdje mozete presresti svoje greske na formi
Call TabelaGresaka
DataErr=0
Response=0
End Sub
[ azras @ 12.06.2006. 12:37 ] @
I ja imam isti problem, vec danima se patim.
Evo pokusala sam primijeniti ovaj savjet sa CallTabelaGresaka, al ne ide...
A nisam shvatila sta se to poziva, jel to neka postojeca tabela?
[ izonic @ 12.06.2006. 15:48 ] @
Nije postojeca nego napravis svoju tabelu gresaka gdje upisujes greske.
Ja sam naveo samo gdje se mogu greske presresti i ideju kako ih dalje sloziti te da su na jednom mjestu.
Cini mi se da je Zidar jednom izbacio kod za upis u tabelu accessovih gresaka pa bi se mozda mogla samo ona prvesti i kao takva dobro bi koristila svima.
[ Trtko @ 13.06.2006. 08:07 ] @
Azras ,
To ti ide ovako , nisam bas vjest u objasnjavanju , valjda ces skuziti
On error - ti je bitan
ako se desi neka greska u izvrsavanju programa , onda program skoci na
labelu gresi ( unutar nje obradjujes gresku )
Private Sub Command0_Click()
On Error GoTo gresi
If Right(odkud, 1) = "\" Then
Else
odkud = odkud + "\"
End If
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(odkud)
Set fc = f.Files
brk = 0
s = ""
For Each f1 In fc
trt = Right(f1.Name, 12)
dat = Left(trt, 8)
dd = Left(dat, 2)
mm = Mid(dat, 3, 2)
gg = Right(dat, 4)
novid = dd & "/" & mm & "/" & gg
zadat = CDate(novid)
If zadat >= pocdat Then
If zadat <= zavdat Then
If UCase(Right(f1.Name, 3)) = "TXT" Then
brk = brk + 1
s = s & f1.Name & ";"
End If
End If
End If
Next
List10.RowSource = s
Dim pozmen As Integer
For j = 1 To brk - 1
List10.Selected(j) = True
imel.Caption = List10.Column(0, j)
pozmen = 0
pozmen = InStr(1, List10.Column(0, j), "_", vbTextCompare)
novi = Mid(List10.Column(0, j), pozmen + 1, Len(List10.Column(0, j)))
pozmen = InStr(1, novi, "_", vbTextCompare)
brknj.Caption = Left(novi, pozmen - 1)
popa = Mid(novi, pozmen + 1, Len(novi))
pozmen = InStr(1, popa, "_", vbTextCompare)
popr.Caption = Left(popa, pozmen - 1)
trt1 = Right(List10.Column(0, j), 12)
dat = Left(trt1, 8)
dd = Left(dat, 2)
mm = Mid(dat, 3, 2)
gg = Right(dat, 4)
novid = dd & "/" & mm & "/" & gg
zadat = CDate(novid)
datpop = zadat
stoto = odkud + List10.Column(0, j)
prepisi (stoto)
Me.Repaint
Next j
Exit Sub
gresi:
If Err = 76 Then
MsgBox "Ne postoji taj folder ( direktorij ) s podacima"
Exit Sub
else
' sve ostale greske
' javis da se pojavila greska
' i posaljes ga van iz sub
exit sub
End If
End Sub
eto
Pozdrav
Trtko
NE OBAZIRI SE NA KOD UNUTAR !!!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|