Print vraag

  • Onderwerp starter Onderwerp starter Risk
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Risk

Gebruiker
Lid geworden
5 jul 2010
Berichten
275
Forum,

In mijn database heb ik een formulier als een zgn. stamkaart gemaakt met alle gegevens van een medewerker.

Vanuit dit formulier heb ik een rapport gemaakt.

Als ik nu print loop ik het risico dat alle kaarten worden afgedrukt.

Wat ik zoek is een mogelijkheid dat ik alleen het "huidige" record (lees record dat ik nodig heb en niet alle 100 anderen per ongeluk) print.

Is daar iets voor te bedenken of heb ik een mogelijkheid over het hoofd gezien.

Hoor graag,

Risk
 
Als ik nu print loop ik het risico dat alle kaarten worden afgedrukt.
Niet echt een risico, want als je het goed inricht gebeurt het nooit, en als je het slecht bouwt altijd ;)
Als je het rapport opent met het huidige MedewerkerID als filter, zou je het juiste record moeten zien in je rapport. En dan kun je alleen dat record afdrukken. Anders wordt het als je vanuit het formulier gelijk een printopdracht geeft, want dan zal het complete rapport worden afgedrukt. Wat ik zelf meestal doe: ik hang het rapport aan een vaste query, en ik verander vanuit het formulier de SQL van die query. In essentie houdt dat in dat er elke keer een ander criterium aan komt te hangen. En dan kun je gelijk afdrukken, want het rapport laat dan zowiezo alleen het juiste record zien.
 
Michel,

Heb in de eigenschappen van de knop zitten gluren
Als je het rapport opent met het huidige MedewerkerID als filter, zou je het juiste record moeten zien in je rapport.
en, je raad het al, geen filter gezien.

Dan jou opmerking
Wat ik zelf meestal doe: ik hang het rapport aan een vaste query, en ik verander vanuit het formulier de SQL van die query. In essentie houdt dat in dat er elke keer een ander criterium aan komt te hangen. En dan kun je gelijk afdrukken, want het rapport laat dan sowieso alleen het juiste record zien.
en met dat SQL haak ik even af.

Is er een voorbeeldje voor deze visueel ingestelde accessleek ergens beschikbaar?

Weer iets waar ik mijn tanden op stuk kan bijten.

Risk
 
Een simpel filtervoorbeeldje zou er zo uit kunnen zien:
Code:
    DoCmd.OpenReport stDocName, acPreview, , "[WerknemerID] = " & Me!WerknemerID
Hier wordt het filter gebaseerd op het veld WerknemerID van het actieve record.

Een voorbeeldje van de SQL truc:
Code:
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef

Set dbs = CurrentDb()
Set qdf = dbs.CreateQueryDef("qTemp")
qdf.SQL = "SELECT * FROM [QueryNaam of tabel] WHERE [WerknemerID] = " & Me!WerknemerID

Hierbij heb je in ieder geval een query nodig, die in mij geval qTemp heet. Die query mag echt van alles wezen, boeit niet. Maak een query, noem hem qTemp en het werkt al.
Tweede premisse: je rapport gebruikt als Recordbron de query qTemp.
Derde voorwaarde: Bij voorkeur (zou ik althans doen) sla je de query die je nu gebruikt op je rapport op onder een herkenbare naam (niet qTemp!). Wil je dat niet, dan kun je de Recordbron van het rapport ook geheel opbouwen in VBA. Scheelt een query, maar is wat bewerkelijker. Maar je moet dus bij de SELECT komen die het rapport gebruikt.
Heb je aan de drie voorwaarden voldaan, dan doet de code het volgende: hij gebruikt alle velden van die (opgeslagen of opgebouwde query, en voegt er een criterium aan toe. Vervolgens wordt de nieuwe query SQL toegewezen aan de query qTemp. En veel meer is het niet.
 
Michel,

Ga aan de slag en zal e.e.a. in ene proefdatabaseje maken. Lukt het danniet kan ik die uploaden.

Dank ik ga aan de slag.

Risk.
 
Michel,

De eerste domme vraag:

waar zet ik
DoCmd.OpenReport stDocName, acPreview, , "[WerknemerID] = " & Me!WerknemerID

In het formulier staat een knop (via de wizzard) naar het rapport.

Ik neem aan inhet rapport bij laden? Geprobeerd werkt niet. Bij Filter in eigenschappen idem.

Leer wederom graag.

Risk
 
In het formulier staat een knop (via de wizzard) naar het rapport.
Die knop heeft een gebeurtenis <Bij klikken> en die heeft ofwel een macro, ofwel een gebeurtenis. Gezien dat je hem met de wizard hebt gemaakt, zal het wel een macro zijn. Die zou ik dan omzetten naar een Gebeurtenis, en als je die opent met de knop met de 3 puntjes, krijg je iets te zien als:

Code:
Private Sub cmdMailRapport_Click()

End Sub
En daar zet je die regel tussen. Heet je knop anders, dan staat er natuurlijk een andere naam.
 
Michel,

Inderdaad een macro.:o

Ik heb dus nu gemaakt:

Private Sub Knop1405_Click()
DoCmd.OpenReport stDocName, acPreview, , "[Naam] = " & Me!Naam
End Sub

WerknemerID vervangen door Naam.

Dan werkt het niet, knop weet niet welk rapport er moet worden geopend schat ik zo in. Het rapport heet Rptchauffeurskaart.

(En dan ben ik nog niet eens aan die SQL begonnen.):d

Risk
 
Naam is a) een tekstveld, dus dat moet anders worden gebruikt, en b) vast geen sleutelveld (mag ik althans hopen van niet). Ik weet ook niet welk veld je wèl als identifier voor je rapport gebruikt, maar het zal vast niet 'naam' zijn.
 
rapport

Heeft niets met naam te maken mar je moet stDocName declareren als string

Private Sub Knop1405_Click()
dim stDocName as string
stDocname = JOUW RAPPORTNAAM


DoCmd.OpenReport stDocName, acPreview, , "[Naam] = " & Me!Naam
End Sub
 
Pletter,

Dank voor je input, het werkt! Zie gelijknog meer mogelijkheden om dit te gebruiken.

Weer veel geleerd, ook dank voor de moeite Michel

Dank als altijd.

Risk
 
Declareren is alleen nodig als je Option Explicit in de algemene sectie hebt staan; zonder die regel had je code gelijk al gewerkt. Of deze variant, waarbij je helemaal geen variabele nodig hebt (in dit geval ook een beetje onzinnig:
Code:
Private Sub Knop1405_Click()
     DoCmd.OpenReport "Rapportnaam", acPreview, , "[Naam] = " & Me!Naam
End Sub
Niet dat ik aanraad om deze regel weg te laten...
 
Laatst bewerkt:
MIchel,

Ook deze oplossing werkt. Wat ik niet gezien had was
DoCmd.OpenReport "Rapportnaam"
in te voegen.

Ook jou oplossing werkt. Nogmaals beide mijn grote dank.

Risk
 
Op naar het tweede deel :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan