18. april 2004 - 16:02Der er
11 kommentarer og 2 løsninger
Problem med print af Report
Kære eksperter, jeg har et problem når jeg forsøger at printe min report, hvis jeg printer den uden preview med kommandoen. DoCmd.OpenReport stDocName, acNormal, , "([ID]=" & Form_APBA.txtID.Value& ")".
Printer den ikke hele min report den skipper to sub reports som jeg fylder hver især med eventet Report_Open. De 2 sub reports bliver fint vist i Previewet men bliver ikke printet ud ? Grunden til at jeg gerne vil bruge den anden mulighed med DoCmd.RunCommand acCmdPrint er at jeg gerne vil give brugeren mulighede for at vælge printer, udskrive på begge sider osv. Jeg bruger Access 2k og win 2k.
Jeg går ud fra, at det er en skrivefejl, at de 2 docmd.openreport-udtryk er lidt forskellige:
Do kan evt prøve at placere denne på din knap: DoCmd.OpenReport stDocName, acViewPreview, , "ID=" & Me!txtID 'en mere simple syntaks Doevents DoCmd.RunCommand acCmdPrint
Begrundelse: Jeg kunne forestille mig, at rapporten endnu ikke er færdigindlæst inden du beder den udskrive.
prøv - bare for testens skyld - at indsætte en lang løkke i stedet for doevents:
Dim n as long DoCmd.OpenReport stDocName, acViewPreview, , "ID=" & Me!txtID 'en mere simple syntaks For n = 1 to 100000:Next n DoCmd.RunCommand acCmdPrint
Det lader ikke til at det er her problemet ligger? Det virker ihvertfald ikke. Sådan her ser min subreport kode ud:
Private Sub Report_Open(Cancel As Integer)
Dim sqlstring As String sqlstring = APBA.findRisks Report_Risks.RecordSource = "Select * from APBA_Risks_table where" & sqlstring & " ORDER BY RisksID ASC"
hmm, hvad sker der, hvis du kun åbner rapporten i preview? Kommer subrapporten så med?
Jeg tror nok, at det er tildeling af Recordsource'n, som er årsag til fejlen. Men hvorfor det virker med den ene metode og ikke den anden er en gåde :o(
Ja det er en gåde. Hvis jeg bare åbner den i almindeligt preview så bliver begge mine subreports vist ganske fint som de skal. Så det er lidt svært at se hvorfor det "forsvinder" fra mit print.
og hvis du så (fra Preview) vælger Filer->Udskriv og udskriver på den måde. Kommer de så med? Eller er det kun, når du skyder det hele afsted på én gang, at subrapporten mangler?
Hvis fejlen skyldes at du sætter recordsourcen på subrapporten ved åbning, så er der 3 muligheder, som jeg ser det:
1) Opbyg din recordsourcen fra starten, så den ikke behøver at blive ændret for hver gang (f.eks. ved brug af funktioner (variable))
2) Lad recordsourcen være en gemt forespørgsel, som du herefter ændre lige inden du åbner rapporten: Eks: currentdb.Querydefs("Dinrecordsource").SQL = "Select * from APBA_Risks_table where" & sqlstring & " ORDER BY RisksID ASC" DoCmd.OpenReport stDocName, acViewPreview, , "([ID]=" & Form_APBA.txtID.Value & ")" DoCmd.RunCommand acCmdPrint
3) Åbne subrapporten i designvisning, skift recordsourcen , luk rapport og gem, og åbne igen i Preview: Eks: Docmd.Openreport "DinSubreport",acViewDesign Reports!DinSubrapport.recordsource = "Select * from APBA_Risks_table where" & sqlstring & " ORDER BY RisksID ASC" Docmd.Close acreport, "DinSubrapport",acSaveyes DoCmd.OpenReport stDocName, acViewPreview, , "([ID]=" & Form_APBA.txtID.Value & ")" DoCmd.RunCommand acCmdPrint
Jeg vil nok give dig ret i at problemet ligger ved sætningen af recordsourcen, Og det skyldes et ringe database design. Jeg har en enkelt kolonne som mappes til en masse poster i to andre tabeller opdelt som kommaværdier :-(. Så det er noget hø, og skal laves om når jeg gider :-) Skal nok prøve dine løsningsforslag på et tidspunkt men indtil videre bibeholder jeg den eksisterende funktionalitet. Du får point for din gode hjælp.
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.