gefilterde records afdrukken via rapport

Status
Niet open voor verdere reacties.

NX 74205

Gebruiker
Lid geworden
3 jun 2010
Berichten
8
De records in mijn hoofdformulier (access 2007) worden automatisch gefilterd op datum, standaard worden de records van vandaag – date() – weergegeven. Met behulp van enkele aangemaakte knoppen en filters worden meermaals per dag andere records uitgefilterd.
Omdat de bekomen zoekresultaten regelmatig moeten worden uitgeprint heb ik een rapport gemaakt, en hier zit mijn probleem. Ik kan probleemloos ALLE records in het rapport oproepen, maar het is eigenlijk de bedoeling dat de gefilterde records uit het formulier worden getoond in het rapport. Het aantal records en dewelke varieert dus constant. Dit lukt me echter niet. Hoe ik het ook aanpak, ik krijg ofwel geen enkele of slechts één record in mijn rapport.

Kan iemand me misschien uitleggen wat ik verkeerd doe, of hoe ik wel het gewenste resultaat krijg?
:confused:

Alvast bedankt.
 
Je kunt een filter meegeven als je het rapport opent. Als je het filter uit je formulier haalt, kun je dat filter overzetten op je rapport.

Code:
DoCmd.OpenReport "[Rapportnaam]", A_PREVIEW, , Me.Filter
 
goedemiddag Michel,

bedankt voor je reactie, maar ik vrees dat je anwoord een beetje boven mijn pet gaat. Kan je het misschien in "lekentaal" uitleggen aub?
Alvast bedankt.
 
Ik heb 't een beetje kort gehouden, omdat ik hoopte dat je het rapport aanstuurt via een knop op een formulier.
Code:
maar het is eigenlijk de bedoeling dat de gefilterde records uit het formulier worden getoond in het rapport.
Als dat zo is, en dat denk ik dus, dan zit daar een code achter, die het feitenlijke rapport opent. Deze code zou je moeten aanpassen volgens mijn voorbeeldje.
Jammer genoeg (voor jou) werk ik zelf niet met 2007, maar met 2003 die heel anders omgaat met formulieren en rapporten. Ik kan dus niet goed beoordelen wat de juiste oplossing is voor je probleem. Ik moet dus op voorhand enigszins vaag blijven...
Als je het rapport rechtstreeks opent, dus zonder formulier, dan kun je misschien de Bron van het rapport aanpassen. Meestal is een rapport gebaseerd op een query, of op zijn minst op een tabel. Die query zou je kunnen aanpassen met een Criterium met een Vraagveld, zodat je bij het openen van het rapport om een datum(reeks) wordt gevraagd.
Een andere optie is om het criterium te koppelen aan een (datum)veld op je formulier. Ook dat kun je nog makkelijk zelf doen door in het ontwerpscherm van de query in het veld Criteirum een verwijzing te maken naar het betreffende formulierveld. Het beste doe je dat met de knop <Opbouwen>, die je kunt gebruiken om het formulierveld op te zoeken en te plakken.
Als je Access 2007 gebruikt met Macroknoppen, ben ik een beetje uitgepraat vrees ik, want ik doe zowiezo al niks met macroknoppen. Met VBA kun je zowel in 2003 als in 2007 wel ongeveer hetzelfde doen. Maar dat hangt dus van de inrichting van de db af.
 
Goedemorgen Michel,

Bedankt voor je uitgebreide uitleg, het is zeer verhelderend gebleken.

Je hebt gelijk dat er vanuit het formulier een knop bestaat naar het rapport, maar access 2007 werkt niet meer (of nauwelijks?) met gebeurtenisprocedures, wel met macro’s. Aangezien ik spijtig genoeg zelf nauwelijks iets van VBA ken maar beter overweg kan met macro’s kan ik meestal toch het gewenste resulaat bekomen. Helaas is mijn kennis van access sowieso beperkt.
Om het huidige probleem op te lossen heb ik de database opgeslagen compatibel met 2003 zodat ik via de wizard een gebeurtenisprocedure kreeg om het rapport af te drukken. Daarna heb ik jouw instructies gevolgd en de VBA-code ingevoegd wat inderdaad prachtig werkt, de knop gekopieerd naar mijn database versie 2007 en alles werkt nu perfect.

Hartelijk dank Michel !!
:d
 
Prima uiteraard dat-ie werkt :thumb: Ik heb begrepen dat in A2007 je wel degelijk kunt instellen dat je met VBA werkt, i.p.v. met macro's. Zit ergens in die idiote startknop geloof ik.....
 
Het aanmaken van een module of een class module, doe je in het lint "Create" (Maken). Helemaal rechts met het pijltje onder "Macro" open je een pulldown menu met de optie's module en class module.

Zit je in de ontwerpweergave van een formulier dan kun je via de propperties van een object net zo als in 2003 (knopje met 3 puntjes) een gebeurtenisprocodure opvragen. Klik op het knopje met de 3 puntjes en je kunt kiezen uit:

Macrobuilder (Opbouwfunctie voor macro's)
Expression Builder (Opbouwfunctie voor expressies)
Code Builder (Opbouwfunctie voor programmacode)
 
Zoals gezegd heb ik een formulier waar constant gegevens ingevoerd en records uit gefilterd worden. De gefilterde records moeten ook regelmatig naar een rapport worden verzonden. Van Octafish / Michel heb ik enkele regels VBA code gekregen waarbij ik inderdaad het gevraagde afdrukvoorbeeld krijg.

Ondertussen heeft men echter gevraagd om de rapporten niet alleen te printen maar ook te mailen, liefst automatisch met een knop op het formulier. Aangezien ik dit in VBA niet kan wegens veeeel te weinig kennis wil ik dit via een macro doen waar ik veel beter mee overweg kan.

Op zich kan ik probleemloos het rapport openen en mailen via een macro, enkel de filter van het formulier meenemen naar het rapport (het oorspronkelijke probleem) blijft een probleem. Kan iemand me misschien vertellen hoe ik dit via een macro toch kan doen? Vermoedelijk via de filternaam of WHERE-voorwaarde veronderstel ik?

Alvast bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan