Rapport baseren op meerdere queries OF selecteren binnen berekende rapportvelden

Status
Niet open voor verdere reacties.

BartSt

Gebruiker
Lid geworden
26 jun 2012
Berichten
86
Dag allemaal,

Ik heb een query die alle ziekteperiodes van medewerkers oplijst. Medewerkers die niet ziek zijn geweest, krijgen 1 record met invulling van null voor de ziektevelden. (Bedankt Michel :) )

Het rapport dat is gebaseerd op die query lijst dat allemaal netjes op en berekent allerlei kencijfers op afdelings- en organisatieniveau.

Enkele kencijfers krijg ik echter niet berekend, bv. het aantal nulverzuimers (aantal medewerkers dat niet is ziek geweest.)

Ik heb die lastige kencijfers berekend in een aparte query. Maar daarop is het rapport niet gebaseerd. Gevolg: elke keer als ik naar de kencijferquery wil verwijzen, behandelt het rapport mijn verwijzing als een parameter. Niet goed dus. Voorbeeld: besturingselementbron van het rapportveld "aantal nulverzuimers":
Code:
=[HLPQ_Afw_Paremeters per afdeling]![Nulverzuimers]

Ik heb ook op allerlei manieren geprobeerd in de besturingselementbron aan de slag te gaan met de velden die in het rapport aanwezig zijn. Bijvoorbeeld: "tel het aantal personeelsnummers waarvan het aantal ziektedagen 0 is." Dan kom ik steeds uit bij SQL (achtige) constructies, en ook dat vindt Access niet zo prettig...
 
Je kunt in een tekstveld niet verwijzen naar een veld in een tabel of een query; zelfs niet als er in die query maar één record zit werkt dat niet. Wel kun je DLOOKUP gebruiken die de waarde opzoekt op basis van een PersoneelID o.i.d.
Waarom zou je de mensen zonder ziektedagen niet kunnen berekenen? Daar komt dan toch gewoon 0 uit?
 
Laatst bewerkt:
Waar waarom zou je de mensen zonder ziektedagen niet kunnen berekenen? Daar komt dan toch gewoon 0 uit?

Wel, ik slaag er niet in om een juiste formule te schrijven. Welk sleutelwoord gebruik je dan om de juiste mensen te tellen/selecteren?
(Onjuist) vb om de nulverzuimers te tellen: =Aantal([Rijksregisternummer] "waar" [TotaalZiekte]=0)

DLOOKUP is een goed idee, ik ga het proberen.


EDIT: Zucht. Dlookup lukt me niet. Onderstaande code staat in de besturingselementbron van een rapportveld.
Rapport is gegroepeerd per stamplaats. Naast het veld stamplaats staat het Dlookupveld, dat het veld "Nulverzuimers" uit een query moet halen voor de betreffende stamplaats. De query is eveneens gegroepeerd per stamplaats. Wat loopt er mis?

Code:
=DLookUp("[Nulverzuimers]";"HLPQ_Afw_ZiektePerStamplaats";"[Stamplaats]=" & [Rapporten]![HLPQ_Afw_ZiektePerStamplaats]![Stamplaats])
 
Laatst bewerkt:
Als je een voorbeeldje maakt, werkt dat wat makkelijker. Ik heb nog wel een oudere db (2012-07-24 Test query ziekte.mdb) maar daar zit geen rapport in.
 
Als je een voorbeeldje maakt, werkt dat wat makkelijker. Ik heb nog wel een oudere db (2012-07-24 Test query ziekte.mdb) maar daar zit geen rapport in.

Hierbij een voorbeeld met rapport. (Opnieuw 2003 in een rar, in een zip) Het gaat over het veld "ziekteverzuimers".

Bekijk bijlage 2012-07-31 Testbestand ziekterapport.zip

Nog een (toekomstgerichte) bemerking: Ik wil aan dit rapport nog een aantal gelijkaardige berekende velden toevoegen. Momenteel heb ik daar een aparte query voor waarnaar ik wil verwijzen met Dlookup. Als je een betere manier ziet, hoor ik dat graag.
Ik ben in de veronderstelling (of toch hoop) dat die overige velden zullen lukken als ik de werkwijze voor dit eerste veldje doorheb.
 
Laatst bewerkt:
Ik heb het rapport overnieuw moeten maken, want hij bleef crashen. Gelukkig had ik dus nog een oudere versie waar het nog wel in kon.
De querynamen zijn wat anders als bij jouw versie, maar daar kom je wel uit denk ik. Ik heb de DLookup naar een query verplaatst, want het is veel makkelijker om dat soort zaken al in een query te regelen. DLookup op een rapport is geen gelukkige combinatie, en als het in een query al kan: waarom niet?
 

Bijlagen

Michel,

Crashte Access bij jou wanneer je mijn bestand opende?

In elk geval bedankt, want ik heb het aan de praat gekregen.

Als ik het goed begrijp, was de oplossing heel simpel: een doodgewone select query maken die de twee queries combineert die het rapport nodig had. Zou het kunnen dat ik nergens een DLookup terugvind? Ondanks het feit dat ik heb geleerd om het complexere rekenwerk over te laten aan queries i.p.v. rapporten, blijf ik nieuwsgierig of er iets scheelde aan mijn DLookup formule hierboven. (De formule op zich bedoel ik dan. Dat die vierkant draait in een rapport, is gebleken :) )
 
Hij crashte bij het openen van het rapport; d.w.z. niet zozeer het openen, maar het sluiten :) Daardoor kon ik nog wel wat tekstvakken kopieëren. Dus er was wel wat mee te doen.
Je kunt vermoedelijk in een koptekst geen Lookup gebruiken. Ook niet bij de gebeurtenis <Bij opmaken> trouwens werkt het niet.
 
Daar lijkt het op, ondanks de uitleg in de help van Microsoft... (Die ik tot op de letter heb gevolgd, zonder gunstig resultaat.) Er is blijkbaar soms een aanzienlijk verschil tussen Access in theorie en Acces in praktijk.

Nogmaals bedankt voor je hulp!
 
Je kunt vermoedelijk in een koptekst geen Lookup gebruiken. Ook niet bij de gebeurtenis <Bij opmaken> trouwens werkt het niet.

Even een vervollediging: ik heb gevonden waarom de DLookup() niet werkte: die kan enkel zoeken in queries zonder parameter. De query waar ik naar wilde verwijzen, had een parameter nodig.

Waarom er in DLookup() dan geen optioneel onderdeel voorzien wordt om een parameterwaarde mee te geven, is mij een raadsel...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan