Jeg vil gerne have lukket formen og stoppet programforløbet efter fejlen Jeg har prøvet med alt inklusiv STOP men det er ofte umuligt at undgå gentagne fejlkald
Desværre er det ikke så simpelt Jeg er nok nød til at specificere hvad jeg ønsker:
Når der opstår en kodefejl kaldes Error Handling Her vises fejl koden Alt det har jeg brugt i 10 år - ingen problem Det nye kommer her: Efter Fejlvisningen vil jeg have programmet stoppet i programforløbet (Her kan STOP bruges) men herefter ønsker jeg programmer går videre automatisk forfra til start af formen eller menuen
Det sker ikke nu. STOP standser i koderne og brugere bliver forvirrede
Først: > Jeg vil gerne have lukket formen og stoppet programforløbet efter fejlen
Det er, hvad End gør.
Nu: >herefter ønsker jeg programmer går videre automatisk forfra til start af formen eller menuen
Stop indsætter en pause på kodeniveau. Hvis du ønsker noget tilsvarende på brugerniveau, er det MsgBox, som du allerede har.
Så løsningen er at tilrette din kode efter MsgBox til at gøre det, du ønsker - angiveligt start af formen eller menuen, men da du lukker formularen efter MsgBox, er det lidt uklart, hvad der skal ske.
Du inkluderer fejlhåndtering i din funktion. Her er et gammelt eksempel:
Public Function ConvRTFtoText( _ ByVal strRTF As String, _ Optional booSingleRun As Boolean) _ As String
' Converts RTF formatted string to plain text using RTF ActiveX control. ' When finished, Rich Text object is removed if booSingleRun is True. ' ' 2001-05-27. Cactus Data ApS, CPH.
Static objRTF As Object Static booErr As Boolean Dim strText As String
On Error GoTo Err_ConvRTFtoText
If objRTF Is Nothing Then Set objRTF = CreateObject("RICHTEXT.RichtextCtrl") End If
With objRTF .TextRTF = strRTF strText = .Text End With
If booSingleRun = True Then Set objRTF = Nothing End If
ConvRTFtoText = strText
Exit_ConvRTFtoText: Exit Function
Err_ConvRTFtoText: If booErr = False Then MsgBox "Error " & Err.Number & ". " & Err.Description & "!", _ vbExclamation + vbOKOnly, _ "Rich Text converter" ' Only show error message once per session. booErr = True End If Resume Exit_ConvRTFtoText
Du bygger fejlhåndteringen ind i din nuværende funktion.
Ved [i]Err_DinFunktion[/] indsætter du, hvad der skal ske, hvis funktionen fejler. Kan programmet køre videre på en meningsfuld måde, så gør det; hvis ikke, så luk Access ned på en pæn måde.
Jeg er helt lost Jeg ville blive utrolig glad hvis du vilde "puttede det ind i min Error_Handling sub:
Public Sub Error_Handling()
Dim a As String, X As String, Y As String, Z As String, E As String, d As String
a = "Fejl art og sted:" X = "Form: " & FormName Y = "Sub Form: " & strSubFrm Z = "Fejl Kode for Placering " & code E = "Fejl Art: " & Err.Number d = "Fejl Beskrivelse: " & Err.Description
MsgBox a & Chr(10) & Chr(10) & X & Chr(10) & Y & Chr(10) & Z & Chr(10) & E & Chr(10) & d, vbCritical, "Fejlmeddelelse / Error"
If MsgBox("Vil du Fortsætte [Ja] eller Start forfra [Nej] ?", vbYesNo + vbQuestion, "Spørgsmål!") = vbYes Then
Stop <======= Herefter skal der fortsættes automatisk ???? DoCmd.OpenForm "zzzz"
Else Stop <======= Herefter skal der fortsættes automatisk ????
Der er ikke én måde at gøre dette på. Det afhænger helt af applikationen og fx, om den overhovedet kan køre videre efter fejlen. Her er en måde:
Public Sub ErrorMessage( _ ByVal FunctionName As String, _ ByVal FormName As String, _ ByVal SubformName As String, _ ByVal Number As Long, _ ByVal Description As String)
Const Title As String = "Fejlmeddelelse/Error"
Dim Prompt As String Dim Buttons As VbMsgBoxResult
Min sub Sub ErrorMessage virker på samme måde som din Jeg kan ikke se hvor Function ConvRTFtoText kommer ind i billedet?
Med de koder du har listet fortsætterprogrammet efter en fejl fortsat med at liste følgefejl op Det er det jeg ønsker standset Første fejl er nok Herefter skal der gås til en neutral form f.eks menuen
Function ConvRTFtoText er jo bare et eksempel på implementering af fejlhåndtering i en funktion.
Hvordan det skal gøres i din aktuelle kode, kan jeg ikke gennemskue, da jeg intet ved om, hvad der sker i dit program. Og hvis programmet er stoppet helt på grund af en seriøs fejl, kan det ikke åbne nogen formular eller menupunkt - så lukker det ned uanset hvad.
Men studér linket, jeg postede - det kommer hele vejen rundt om brug af fejlhåndtering i VBA, godt nok i Excel, men det er det samme i Access.
En lille kommentar: Hvis det i alle tilfælde af fejl er ok at lukke formen (close form) og derved automatisk gå "tilbage" til en menu, hvad forhindrer dig så i dét? Og hvis alt andet kikser, er der jo altid mulighed for at afslutte/genstarte Access efter en passende besked. Hvis programmet skal kunne håndtere forskellige fejltyper på forskellig måde, f.eks. hvis man skal skynde sig at lagre data (eller netop ikke lagre), er der nok kun "Gustavs" metode tilbage.
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.