22. juli 2003 - 18:08Der er
17 kommentarer og 1 løsning
overføre både err.number og currntformname til et modul
hej! jeg har et fejlbehandlings modul jeg har lavet nu vil jeg gerne lave en log der registrer både err.number og currentform plus hvilken knap fejlen kom ved. er det muligt at opsamle alt dette jeg har prøvet lidt med err.number as string og det virker men jeg skal også have de sidste med og ved ikke helt hvordan jeg får de to sidste med over i modulet
er mit modul Public Function Global_Error_Handler(sSource As String, frmCurrentForm As String)
Dim sMsg As String Dim lContactSystemSupport As Boolean ' denne linje skal være true hvis man skal bruge coped with Dim lHandled As Boolean Dim dbs As Database Dim rst As dao.Recordset
Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Select * from tbl_errorlog ", dbOpenDynaset) With rst .AddNew !FejlNummer = Err.Number !Fejlbeskrivelse = Err.Description !fomularnavn = frmCurrentForm !Dato = Now() .Update End With
End Function
og min kode under de enkelte knapper forms etc. er
On Error GoTo Err_glob_Click
Exit_glob_Click: Exit Sub
Err_glob_Click: set frmcurrentform = screen.activeform Global_Error_Handler (Err.Number), (frmcurrentform.name) Resume Exit_glob_Click End Sub
men den kode under enkelte knapper ville jeg gerne ændre til kun en linje
altså kun Global_Error_Handler (Err.Number), (formnavn),(stedforfejl)
so something like Global_Error_Handler err.number, Screen.ActiveForm.Name, screen.ActiveControl.Name
dont use ()unless you return a value!
You may also be able to get hold of the screen object names in your global function as long a syou havent set focus anywhere else before you get there.
? Cant see your application so I dont exactly know what to suggest! Are you saying that the error 2474 occurs BECAUSE there is no active control or what? If the .Name is Null then you could use nz(Screen.ActiveForm.Name, "", Screen.ActiveForm.Name ) which should change the NULL to ""
juks if you can send me your dB then I can maybe see what is happening eksperten@santhell.dk but it will first be tomorrow morning, i'm off for the evening
hej terry hvis jeg bruger din kode kode start--- Public Function Global_Error_Handler()
Dim sMsg As String Dim lContactSystemSupport As Boolean ' denne linje skal være true hvis man skal bruge coped with Dim lHandled As Boolean Dim dbs As Database Dim Rst As DAO.Recordset Dim ctl As Control Dim frm As Form
Set ctl = Screen.ActiveControl Set frm = Screen.ActiveForm
Set dbs = CurrentDb Set Rst = dbs.OpenRecordset("Select * from tbl_errorlog ", dbOpenDynaset) With Rst .AddNew !FejlNummer = err.Number !Fejlbeskrivelse = err.Description !formularnavn = frm.Name !Dato = Now() !feljcontrol = ctl.Name .Update End With
Select Case err.Number
Case 3021 sMsg = "Du kan ikke logge ind uden brugernavn og password"
Case 3070
Case 3170 sMsg = "Du mangler noget af Access runtime license , kontakt JHC IT-Support + 45 2070 6424"
Case 3044 ' sMsg = "Der er ingen diskette i drevet eller der er en forkert diskette!" Case 3024 'sMsg = "Det er ikke den korrekte diskette, indsæt venligst disketten fra Dansk Management Forum" Case Else sMsg = err.Description & " " & err.Number
' On Error GoTo 0
End Select
sMsg = "Det er opstået en fejl, prøv at lukke programmet og start det igen." & vbCrLf & "hvis det ikke løser problemet kontakt JHC IT-Support + 45 2070 6424 " & _ vbCrLf & " (" & err.Description & ")"
MsgBox sMsg
'Global_Error_Handler
End Function -------- kode slut får jeg en fejl 2474 " The expression you entered refers to an object that is closed or doesn't exist."
fordi den ikke kan finde "Screen.ActiveControl" hvad gør jeg så ???
this isnt the same dB as you sent me is it? Any chance of seeing it?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.