09. maj 2002 - 23:03Der er
6 kommentarer og 2 løsninger
Åbn rapport men kun hvis der er records
ønsker kun at bruger kan åbne rapport hvis der er data registreret.
Har pt flg kode på knap...
Private Sub cmdVisrptLedigeTider_Click() On Error GoTo ErrHandler Dim sRapport As String
sRapport = "rptLedigeTider"
DoCmd.OpenReport sRapport, acPreview
ErrHandler: If Err = 2501 Then Exit Sub Else MsgBox Err & vbNewLine & Err.Description End If End Sub
Koden på rapporten er:
Private Sub Report_NoData(Cancel As Integer)
If Me.HasData = False Then
MsgBox "Der er i øjeblikket " + vbLf + "ikke registreret nogen ledige tider!", vbInformation, "Ingen data registreret"
Cancel = True End Sub
Virker egentlig også fint - når der ikke er nogen records registreret vises msgBox. MEN så kommer det irriterende - - - når der er data åbnes rapport fint MEN foran rapporten vises msgBox med Titlen "Microsoft Access" samt teksten 0
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Der mangler en End if i din sidste procedure, men jeg er ikke sikker på, at det er fejlen.
Prøv at trykke Ctrl+Break, når fejlen kommmer.
btw, så kan koden i Report_NoData gøres meget enklere:
Private Sub Report_NoData(Cancel As Integer) MsgBox "Der er i øjeblikket " + vbLf + "ikke registreret nogen ledige tider!", vbInformation, "Ingen data registreret"
Cancel = True End Sub
(Du behøver jo ikke at spørge på Me.HasData - hvis du når til Report_NoData, så er der INGEN data i rapporten!)
jeps mangler en end if i sidste procedure. Er med i min kode men det var selvfølgelig også lidt sent da jeg lage spørgamålet op...:)
mht koden i Report_NoData så har du da evigt ret - der er ingen grund til at bruge If Me.HasData = False :)
så... en forenkling af sidste procedure...
har selv lige rettet i koden til knappen, så den nu ser sådan ud, OG der er ingen MsgBox fra Access
Private Sub cmdVisrptLedigeTider_Click() Dim sRapport As String
sRapport = "rptLedigeTider"
DoCmd.OpenReport sRapport, acPreview
ErrHandler: If Err = 2501 Then Exit Sub End If
End Sub
Det jeg har udeladt er
Else MsgBox Err & vbNewLine & Err.Description
OG det skal da for pokker heller ikke med, da jeg kun ønsker at tjekke på error 2501.
Så i skrivende stund er det jo logik for BURHØNS at Else osv IKKE skal med. Tager jeg den med OG der er ingen fejl viser Access jo bare høfligt meddelelsen - at der ikke er nogen fejl - ie
>MEN så kommer det irriterende - - - når der er data åbnes rapport >fint MEN foran rapporten vises msgBox med Titlen "Microsoft Access" >samt teksten 0
Private Sub cmdVisrptLedigeTider_Click() Dim sRapport As String sRapport = "rptLedigeTider" DoCmd.OpenReport sRapport, acPreview Exit Sub ErrHandler: If Err = 2501 Then Exit Sub End If End Sub
Private Sub cmdVisrptLedigeTider_Click() Dim sRapport As String sRapport = "rptLedigeTider" DoCmd.OpenReport sRapport, acPreview Exit Sub
ErrHandler: If Err = 2501 Then Exit Sub Else MsgBox Err & vbNewLine & Err.Description End If End Sub
så burde det ikke medføre nogen msgbox fra Access...... ok enten er det mig der husker dårligt :) eller... men mener ikke at jeg plejer at have en Exit Sub efter DoCmd.OpenReport xxxx, acPreview........
Du opbygger "normalt" error-handlere til at håndtere fejl...
Private Sub ... On Error Goto Error_Handler ' her fortæller du hvor koden skal springe hen ved eventuel fejl
' her er din kode
Exit_Handler: Exit Sub ' Her afslutter din kode, hvis der ingen fejl har været Error_Handler: MsgBox Err.Description, vbOkOnly, "ERROR: " & Err.Number ' Denne kode kører KUN hvis der har været en fejl End Sub
>proaccess :) er helt med på at On Error GoTO ErrHandler bruges til at fortælle Access hvad der skal gøres vis der opstår en fejl :)
det jeg undrer mig over er at det er nødvendigt at skrive
Private Sub cmdVisrptLedigeTider_Click() ' bla bla kode kode ' bla bla kode Exit Sub
mhh er måske noget der er specielt når man bruger kode på rapporter... mener da ikke den ellers skal med. Eller det er måske bare mig der husker forkert :)
Private Sub cmdVisrptLedigeTider_Click() ' åbn rapport MEN kun hvis der er ledige tider On Error GoTo ErrHandler Dim sRapport As String
sRapport = "rptLedigeTider"
DoCmd.OpenReport sRapport, acPreview Exit Sub
ErrHandler: ' Err_Handler er nødvendig da rptLedigeTider kun åbnes hvis der er ledige tider. If Err = 2501 Then Exit Sub Else MsgBox Err & vbNewLine & Err.Description End If End Sub
OG på rapporten..... Private Sub Report_NoData(Cancel As Integer) ' hvis der ikke er nogen data i rapporten åbnes denne ikke MsgBox "Der er i øjeblikket " + vbLf + "ikke registreret nogen ledige tider!", vbInformation, "Ingen data registreret" Cancel = True End Sub
;-)
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.