Formulier printen uit navigatieformulier lukt niet

Status
Niet open voor verdere reacties.

Plotinus

Gebruiker
Lid geworden
25 mrt 2007
Berichten
658
Ik heb voor een vereniging een declaratieformulier voor gemaakte onkosten gemaakt, dat bij het aanroepen altijd start met een leeg formulier en waar je ook verder niet voor of achteruit kan: één record dus, al weet ik niet of dat voor de rest van het verhaal van belang is. Als dat formulier is ingevuld kun je het vervolgens exporteren naar pdf, printen, tekenen en indienen.
Het gekke is nu dat als ik het formulier opneem in mijn navigatieformulier en vandaaruit aanroep, ik bij printen naar pdf (maar ook bij 'Afdrukvoorbeeld') een lege pdf krijg (met de bestandnaamsuggestie 'Navigatieformulier.pdf'), op een balk aan de bovenkant na; de menubalk van het navigatieformulier denk ik. Ook staat het blad dan landscape in plaats van portait. Heeft iemand hier een verklaring en/of een oplossing voor.

Wat overigens ook bizar is dat andere formulieren er wel uitkomen, maar dan wel alle records van die bewuste onderliggende tabel; een beetje zoals bij een rapport.

Ik heb geprobeerd het probleem te omzeilen door aan het formulier een rapport te knopen. Maar dan zit ik weer met het probleem dat ik niet weet hoe ik enkel en alleen het laatste record (die zojuist is ingevuld op het bijbehorende formulier dus) kan exporteren/uitprinten? Plan B dus.
 
Formulieren drukke niet af. Punt. Maak een rapport dat je daarvoor gebruikt. Formulieren zijn er om gegevens te muteren/in te voeren.
 
oké, geen formulieren afdrukken. Maar hoe regel ik dan dat enkel het laatste record (dus het ingevuld formulier) wordt afgedrukt in het rapport en niet alle records
 
Door het rapport te openen met het actieve record. Dat geef je dus mee als filter in de WHERE parameter.
 
Het is gelukt een knop in het formulier te plaatsen en daarmee het bijbehorende rapport op de achtergrond af te drukken. Helaas worden dan wel alle records afgedrukt, terwijl ik alleen het laatste record nodig heb.
Ik kom er helaas niet uit hoe de expressie er bij WHERE uit moet zien om enkel het laatste record te printen. Ik heb ook nog gekeken bij 'Filteren' en 'Filteren bij laden' in het Eigenschappenvenster van het rapport; is misschien ook een mogelijkheid, maar hoe dat aan te wenden weet ik ook niet.
 
Gelijk afdrukken is een vervelende, omdat je dan altijd het complete rapport afdrukt, ongeacht wat je meegeeft als filter. Dat werkt alleen als je het rapport opent in de Preview en van daaruit afdrukt.
 
Je hebt gelijk; met een Preview is ook nog de optie beschikbaar om het eventueel eerst op te slaan ed. Blijft toch het probleem van dat ik de gebruiker slechts toegang wil verlenen tot het enige record dat op dat moment met het formulier is aangemaakt. Ik denk dat ik daarvoor 'DLast' moet gebruiken, maar dat lukt niet, noch bij het filter op het rapport nog bij WHERE bij afdrukken.

Ik gebruik DLast([Factuurnummer];[Declaraties]), waarbij op Factuurnummer gefilterd moet worden en ik het hoogste (is laatste) nummer moet hebben; het zit in de tabel Declaraties.
 
Zoals ik al zei: je kunt een rapport openen in de Preview met het actieve record uit je formulier als filter. Of, nog makkelijker wellicht, als je formulier al is gefilterd (tot het actieve record) dan kun je het filter uit het formulier meenemen naar het rapport met de WHERE clausule Me.Filter.
Alternatief (want dat gedoe met filteren vind ik zelf maar hopeloos onhandig) is om het rapport te baseren op een vaste query, en die query steeds aan te passen. Je rapport blijft dan altijd werken, en je kunt hem ook gelijk laten afdrukken als je wilt.
 
Het is me gelukt met WHERE-voorwaarde:[Factuurnummer]=[Formulieren]![Declaraties]![Factuurnummer] vanuit het formulier naar het rapport te komen met het juiste record; eigenlijk zo logisch als wat. Het vervelende is nu dat als ik het vanuit mijn navigatieformulier doe, het dan weer mis gaat, dan komt de vraag om een parameter op te geven. Blijkbaar ontbreekt er nog iets in het pad als vanuit het submenu van het navigatieformulier de declaratie wordt aangemaakt en naar het rapport gegaan moet worden. Iemand een idee hoe ik dat pad hiervoor aan moet passen?
 
Nog logischer is het als je gebruik maakt van de IntelliSense van Access. Dus niet:
Code:
[Factuurnummer]=[Formulieren]![Declaraties]![Factuurnummer]
maar
Code:
[Factuurnummer]=Me.Factuurnummer
Maar dat gaat je waarschijnlijk niet helpen. De oorzaak van je huidige probleem is namelijk heel simpel te verklaren. Als je een filter meegeeft vanuit een formulier, dan moet je het hele pad gebruiken. Is het een zelfstandig formulier, dan werkt jouw code prima. Hangt dat formulier in een ander formulier, dan is het pad niet meer compleet, want dan hangt er een formulier voor. En dat moet dan ook in het pad. Dus ofwel je filter werkt zelfstandig, ofwel het filter werkt vanaf het navigatieformulier. Beide is niet mogelijk. Althans: niet via deze weg. Lees mijn vorige post om te zien hoe het wél altijd werkt :).
 
Dank voor je achtegrrondinfo, maar ik ben nog niet zo ver dat ik weet hoe het met een filter werkt om van hetzelfde (laatse) record in een formulier naar een rapport te gaan. En dus toch met lang zoeken de oplossing met WHERE gevonden:
Code:
[Factuurnummer]=[Formulieren]![Navigatieformulier]![NavigatieSubformulier].[Form]![Factuurnummer]

Met jouw laatste suggestie wordt om een parameter gevraagd, waarmee ik vervolgens elk record kan bereiken om te tonen in het rapport - eentje zeker om te onthouden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan