Avatar billede geertf Nybegynder
05. april 2004 - 16:45 Der er 8 kommentarer og
1 løsning

Tjek om der findes data i underliggende tabel før udskrift (97)

I en knap bruger jeg følgende kode for at sende en bruger (med tilhørende noter) til en rapport:

*******
DoCmd.OpenReport "Rpt_OplysningerOmBruger", acViewPreview, , "BrugerID = " & Me!BrugerID
*******

Rpt bruger blandt andet indput fra tabellerne Tbl_Brugere og Tbl_Noter.

Det virker fint så længe der er tilsvarende poster i Tbl_noter. Men når der ikke er poster i Tbl_Noter, så vises det som en fejl i rapporten. Hvordan undgår jeg at det fremgår som en fejl, fx ved at nøjes med at skrive inputtet fra Tbl_Brugere?
Avatar billede terry Ekspert
05. april 2004 - 17:08 #1
You can do this in a couple of ways!
I would suggest that you us ethe forms "On No Date" event

Private Sub Report_NoData(Cancel As Integer)
MsgBox "No records"
Cancel = True
End Sub
Avatar billede terry Ekspert
05. april 2004 - 17:10 #2
and I'm sure that someone is going to suggest using Dcount so her it is too

If Dcount("*","tbl_noter", "BrugerID = " & me.BrugerID) = 0 Then Exit sub
Avatar billede mugs Novice
05. april 2004 - 23:59 #3
Jeg mener for en gangs skyld, at terry's svar er ufuldstændigt. Det er korrekt med koden i rapportens VedIngenData, men det lukker blot rapporten igen. Hvorimod formularen udskrivningsprocedüre vil melde fejl, idet rapporten ikke blev åbnet. Det er nødvendigt f.eks at tilføje en errorhandler i formularen således:

On Error GoTo Errorhandler
DoCmd.OpenReport "Rpt_OplysningerOmBruger", acViewPreview, , "BrugerID = " & Me!BrugerID
Errorhandler:
If Errnr = 2501 Then
DoCmd.CancelEvent
End If
Avatar billede geertf Nybegynder
06. april 2004 - 09:21 #4
hmm, hvad er der galt med Dcount-modellen? Der kunne Else-leddet være OpenReport-delen, er der noget problem i det? Jeg har oprette to næsten identiske raporter (med og uden input fra Tbl-Noter) jeg bruger If-sætning og Dcount til at vælg hvilken - det virker fint.
mugs>det er helt rigtigt, at hvis man bruger NoData-modellen, så får jeg en slags fejl. Efter msgbox'en får man endnu en, med besked om, at man har anulleret OpenReport-handling, hvilket virker lidt forvirrende for den almindelige brugere.
Tak for hjælpen.
Avatar billede mugs Novice
06. april 2004 - 09:27 #5
Der er vel ikke noget i vejen med DCount-modellen. Blot har man jo lavet hændelsen VedIngenData til dette formål. Så hvorfor ikke benytte den, når det nu er det den er beregnet til.

Ved brug af NoData vil du i 1. msgbox annullere rapporten, men formularens hændelse OpenReport kører stadig og vil ikke blive eksekveret, derfor får du en fejl. Det er netop det jeg undgår, ved at indsætte fejlhåndteringen i formularens udskrivningskode. Kan du ikke få det til at fungere?
Avatar billede terry Ekspert
06. april 2004 - 09:32 #6
Depends on how you look at it mugs! I dont want to make the complete program, so the rest is left up to the user.

Geertf has only given one line of code, but I assume there is more to it than tha, so if he has his own error hander then it just a case of using that.

and your code (as far as I see it) is wrong mugs
Errnr = err.number

And there certainly is no need to DoCmd.CancelEvent

so
If Err.number = 2501 Then exit Sub '(or what ever)
Avatar billede terry Ekspert
06. april 2004 - 09:36 #7
So the easiest method would be

Private Sub Report_NoData(Cancel As Integer)
Cancel = True
End Sub

Then

If err.number = 2501 Then
msgbox "No Data"
exit sub
end if
Avatar billede mugs Novice
06. april 2004 - 09:36 #8
Hi terry > You are right docmd.cancelevent.

This is working perfect here:
If Errnr = 2501 Then Exit Sub
Avatar billede terry Ekspert
06. april 2004 - 10:17 #9
I dont know where Errnr comes from!
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