Aabne rapporter i layout view.
I DoCmd.OpenReport "x" finder jeg acViewPreview, acViewReport, o.s.v., men ikke nogen mulighed for aabne en rapport i layoutview. Kan man programmatisk aabne en rapport i layoutview?I et velvaerdscenter hvor jeg arbejder som frivillig proever jeg at automatisere (blandt andet) udskrift af lister med personer der kommer i centeret. For eksempel, forsikringen skal have lister med navne, adresser, og personnumre for de der deltager i en camp, medarbejderne har brug for navne, telefonnumre, og emailadresser for de der deltager i de forskellige aktivitetsgrupper, kommunen (der giver tilskud) skal have indberetninger med navne og deltagelse i aktiviteter, og somme tider skal der bruges lister bare med navne hvor medarbejderne kan goere notater. Oplysningerne om de der er tilmeldt centeret staar i en Access 2007 database.
Jeg har i en formular lavet en listbox til at udvaelge de personer der skal forekomme i den udskrevne liste. Naar personerne er valgt genereres der en liste i acViewPreview som saa kan sendes til printeren. Jeg spekulerede saa paa at lave valgmuligheder med checkboxe for at vaelge om listen skal vaere blot med navne, ogsaa med personnumre, ogsaa med adresser, o.s.v. Men det slog mig at det ville vare meget nemmere at lave en liste med det hele og aabne den i layout view hvor man saa kan fravaelge det der ikke skal paa listen. Men hvordan?
For orientering vedhaefter jeg vba koden jeg bruger efter at man har valgt et antal navne i listboxen lstPersoonZoeken og trykket paa knappen ctrPersoon. Skulle nogen have kommentarer til koden modtager jeg dem gerne. I koden fylder jeg en tabel med oplysninger ved hjaelp af en query og saa laver jeg en rapport over tabellen. closereports er en procedure der lukker rapporter hvis man allerede har lavet andre lister. (Velfaerdscenteret ligger i Antwerpen, derfor forekommer der udtryk paa hollandsk.)
Private Sub ctrPersoon_Click()
Dim i As Variant
closereports
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM PersoonZoeken"
With Me.lstPersoonZoeken
For Each i In .ItemsSelected
DoCmd.RunSQL "INSERT INTO PersoonZoeken(persoonid, voornaam, achternaam, adres, postcode, plaats, geboortedatum, rijksregistratienr) SELECT p.persoonid, p.voornaam, p.achternaam, a.straat, a.postcode, a.plaats, p.geboortedatum, p.rijksregistratienr FROM Persoon AS p INNER JOIN Adres AS a ON p.adres = a.adresid WHERE p.persoonid = " & .ItemData(i)
.Selected(i) = False
Next
End With
DoCmd.OpenReport "PersoonZoeken", acViewPreview
Reports("PersoonZoeken").Printer.Orientation = acPRORLandscape
DoCmd.SetWarnings True
End Sub