Avatar billede susanne_larsen Nybegynder
09. maj 2002 - 23:03 Der 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

Hvad pokker gør jeg forkert?????????
10. maj 2002 - 02:01 #1
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!)
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 07:34 #2
>thomas

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

G****** Susanne
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 10:26 #3
men på den anden side koden

ErrHandler:
  If Err = 2501 Then
    Exit Sub
  Else
    MsgBox Err & vbNewLine & Err.Description
  End If

burde jo ikke medføre en msgbox medmindre der er en error. Og det er der jo ikke når teksten på msgboxen er "0" - really strange........
Avatar billede proaccess Nybegynder
10. maj 2002 - 10:46 #4
Din sidste linie INDEN Err_Handler: skal være

Exit Sub

ellers køres koden jo hver gang...



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
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 12:12 #5
>proaccess
mhh ok - dvs hvis jeg så skriver

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........

ok prøver når jeg er retur foran den bærbare :)
Avatar billede proaccess Nybegynder
10. maj 2002 - 13:14 #6
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
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 17:47 #7
>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 :)
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 21:30 #8
ok her er koden på plads :)

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


;-)
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