Avatar billede juks Novice
22. juli 2003 - 18:08 Der 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
Avatar billede terry Ekspert
22. juli 2003 - 19:20 #1
Yes its possible but you need to do it all in code. You dont say WHERE you want to register all of this but you could write it to a table!
Avatar billede juks Novice
22. juli 2003 - 19:43 #2
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)

kan du klare dette??
Avatar billede juks Novice
22. juli 2003 - 19:59 #3
med stedforfejl mener jeg det sted fx command_5 eller form_open
Avatar billede terry Ekspert
22. juli 2003 - 20:25 #4
you can use
Screen.ActiveForm.Name and screen.ActiveControl.Name
Avatar billede terry Ekspert
22. juli 2003 - 20:28 #5
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.
Avatar billede juks Novice
22. juli 2003 - 21:01 #6
takker :-)
Avatar billede juks Novice
22. juli 2003 - 21:09 #7
har lige et problem hvad hvis nu min error sker uden et active control.
så for jeg en fejl 2474.
det er jo ikke smart
Avatar billede juks Novice
22. juli 2003 - 21:11 #8
det virker faktisk ok men når den kommer tilbage efter at have kørt igennem mit modul så laver den fejl 2474
Avatar billede juks Novice
22. juli 2003 - 21:14 #9
og "Type mismatch"
Avatar billede terry Ekspert
22. juli 2003 - 21:31 #10
?
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 ""
Avatar billede juks Novice
22. juli 2003 - 21:49 #11
jeg bruger nz(Screen.ActiveForm.Name, "") men så kommer den med type mismatch når den kommer "tilbage" fra modulet igen
Avatar billede terry Ekspert
22. juli 2003 - 21:56 #12
but what are you doing when you come back?

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
Avatar billede juks Novice
16. september 2003 - 10:36 #13
hi terry nu tror jeg min adsl køre igen..
jeg sender lige databasen til dig hvis du stadig vil kigge på den ...
Avatar billede terry Ekspert
16. september 2003 - 19:41 #14
OK!
Avatar billede juks Novice
17. september 2003 - 16:19 #15
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å ???
Avatar billede terry Ekspert
17. september 2003 - 17:18 #16
What are you doing to make an error where no control is selected?
Avatar billede juks Novice
18. september 2003 - 11:24 #17
jeg prøver at slette en post  via en knap i en underform  men trykke nej til at slette i stedet for at sige ja.
Avatar billede terry Ekspert
18. september 2003 - 19:51 #18
this isnt the same dB as you sent me is it? Any chance of seeing it?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester