Avatar billede juks Novice
12. december 2000 - 11:07 Der er 10 kommentarer og
1 løsning

Brug en public function

Hej Eksperter

Jeg har lavet en public funtion Errorhandle()
som et modul.
Men hvordan for jeg mine formulare(vba-koder) til at bruge den function hvis der opstår en fejl.

udsnit af koden -----

Public Function Global_Error_Handler(sSource 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

lContactSystemSupport = False

Select Case Err.Number

Case 3043
    sMsg = \"Der er ingen diskette i drevet, Indsæt en diskette og prøv igen!\"
   
    Exit Sub
    End If
Case 3024
    sMsg = \"Det er ikke den korrekte diskette, indsæt venligst disketten fra Dansk Management Forum\"
    Exit Sub
    End If

End Function


mvh
Jonas
Avatar billede janbangm Nybegynder
12. december 2000 - 11:17 #1
Hej Jonas

Du skal bruger call. Jeg har taget en kopi af en ganske simpel guide funktion:
Private Sub Knap29_Click()
On Error GoTo Err_Knap29_Click


    DoCmd.Quit

Exit_Knap29_Click:

    call Global_Error_Handler


    Exit Sub


Err_Knap29_Click:Resume Exit_Knap29_Click


Istedet for at vise dialogboksen med fejlmeddelsen skal du så have
call Global_Error_Handler


Jeg tror det virker
Avatar billede horus Nybegynder
12. december 2000 - 11:18 #2
øhhh, hvorfor bruge Call ??? Hvis hans function er public er det jo nok bare at skrive navnet på funktionen...

Horus
Avatar billede janbangm Nybegynder
12. december 2000 - 11:21 #3
Ja det er rigtigt. Det er op til en selv om man vil bruge call eller ej
Avatar billede juks Novice
12. december 2000 - 11:52 #4
Horus hvad er det jeg skal gøre ???
Avatar billede horus Nybegynder
12. december 2000 - 12:10 #5
Hør her min ven :-)

I toppen af din kode i dine formularer skal du tilføje en linie der hedder:

On Error Resume ErrorHandler

Nede i bunden af koden skal du skrive følgende:

[Her kommer slutningen af din normale kode]

Resume:

Exit Function \'Eller Exit Sub hvis det er en sub procedure

ErrorHandler:

\'her køres din ErrorHandler - den bliver kaldt herunder

Global_Error_Handler Me.Name (Jeg går ud fra at det argument du vil sende til din errorhandler er navnet på den form hvor fejlen opstår, derfor me.name - hvis ikke giver du den bare et andet argument.)

Resume Continue \'denne linie afslutter funktionen

\'Og endelig kommer din End Function eller End Sub linie

End Function


Alt det ovenstående skal du indbygge i alle dine funktioner i dine formularer, og det vil også være en idé at indsætte den i formularernes \"VedFejl\" hændelse, så fanger du også de fejl der knytter sig til selveformularen...

Håber det hjalp på forståelsen, ellers må du spørge igen.

Horus

Avatar billede horus Nybegynder
12. december 2000 - 12:13 #6
jeg er et sludder kludder hoved.... jeg har lavet et par dumme fejl i mit forrige svar.... ignorer det og se dette i stedet:

I toppen af din kode i dine formularer skal du tilføje en linie der hedder:

On Error Goto ErrorHandler

Nede i bunden af koden skal du skrive følgende:

[Her kommer slutningen af din normale kode]

Continue:

Exit Function \'Eller Exit Sub hvis det er en sub procedure

ErrorHandler:

\'her køres din ErrorHandler - den bliver kaldt herunder

Global_Error_Handler Me.Name (Jeg går ud fra at det argument du vil sende til din errorhandler er navnet på den form hvor fejlen opstår, derfor me.name - hvis ikke giver du den bare et andet argument.)

Resume Continue \'denne linie afslutter funktionen

\'Og endelig kommer din End Function eller End Sub linie

End Function


Alt det ovenstående skal du indbygge i alle dine funktioner i dine formularer, og det vil også være en idé at indsætte den i formularernes \"VedFejl\" hændelse, så fanger du også de fejl der knytter sig til selveformularen...

Håber det hjalp på forståelsen, ellers må du spørge igen.

Horus
Avatar billede janbangm Nybegynder
12. december 2000 - 13:26 #7
Juks gider du forklarer mig hvorfor du ikke kunne bruge mit svar???
Avatar billede horus Nybegynder
12. december 2000 - 13:39 #8
janbangm,

Selvom dit svar som sådan er rigtigt nok, tror jeg bare ikke helt jonas kunne gennemskue hvad det var du mente...

Det er min opfattelse at det desværre tit er tilfældet at enten dem der svarer eller dem der spørger ikke tager sig tid til at beskrive tingene ordentligt, for nogle er det du skrev sikkert ganske indlysende, men for andre er det noget mere kompliceret og disse personer har behov for at man beskriver løsningerne lidt mere frem for bare at \"smække\" noget kode i fjæset på dem....

Horus
Avatar billede juks Novice
12. december 2000 - 13:41 #9
Det kunne jeg vel også men det er jo rart at vide hvorfor jeg skal skrive det jeg skriver. ??
Og den løsning Horus kom var jo den jeg bad om.

mvh
Jonas
Avatar billede juks Novice
12. december 2000 - 14:54 #10
-->> Horus mth til at ligge den i form_error det virker ikke selvom jeg bruger call.
Avatar billede horus Nybegynder
12. december 2000 - 15:14 #11
Det er sandt det havde jeg glemt... form_error er lidt speciel da den modtager en fejlkode via DataErr objectet.

Prøv at udelade alt det jeg ellers har skrevet at du skal skrive og så nøjes med at lave disse linier:

Global_Error_Handler Me.Name
Response = DataErrContinue


Den første linie kalder din errorhandler, og den anden fortæller access at den ikke skal vise dens standardfejlbesked, men at du har vist det der skal vises....

Horus



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