Query met criteria uit andere query

Status
Niet open voor verdere reacties.

nwametze

Gebruiker
Lid geworden
18 dec 2009
Berichten
67
Op het formulier Fzoek wordt een werknemer ID of achternaam ingegeven/gekozen uit een keuzelijst.
Na het klikken op zoeken wordt de query Qwerknemer_functies uitgevoerd waardoor er een overzicht wordt gegenereerd van de functies behorende bij de ingevoerde werknemer ID of achternaam. Dit werkt goed.

Ik wil daarna het formulier Foverzicht openen welke een aantal subformulieren bevat. Deze subformulieren zijn op query's gebaseerd. Als voorbeeld een subformulier SFnaw, met als basis Qnaw met een overzicht van de NAW-gegevens van een werknemer en een subformulier SFfunctie, met als basis Qfunctie met gegevens van de functie.

Bij de query Qwerknemer_functies heb ik als criteria in de kolom WID het volgende staan:
[Formulieren]![Fzoek]![cmbwerknemerID] Or [Formulieren]![Fzoek]![cmbachternaam]
Hierdoor wordt een lijst weergegeven van functies behorende bij de in Fzoek ingegeven werknemer (oa functieID), gesorteerd op meest recent door de datum.

Ik dacht dat ik vervolgens de query Qnaw kon laten lopen met bij functieID het criteria:
[Qwerknemer_functies]![functieID]
Echter, op het moment dat ik de query start krijg ik de melding 'Parameterwaarde opgeven' voor het veld Qwerknemer_functies!functieID.
Het maakt hierbij niet uit of het resultaat van de query Qwerknemer_functies 1 of meerdere regels als resultaat heeft gegeven.

Waarom lukt het de query Qnaw niet om de waarde functieID uit de query Qwerknemer_functies te halen?


(Het uiteindelijke doel is het weergeven van de gevraagde informatie op het formulier Foverzicht. Hier komt ook een keuzelijst op om eventueel een oudere functie te kiezen om daar de info van in te zien (query's voor subformulieren draaien dan opnieuw))
 
Laatst bewerkt:
Ik snap niet helemaal wat Functies met NAW gegevens te maken hebben; in de twee aparte Queries heb je als overeenkomend veld ongetwijfeld het veld wID staan, waarbij je per werknemer dan één of meer adressen hebt, en per werknemer één of meer functies. Maar Functies koppelen aan NAW?
 
Ik zie dat ik het nog behoorlijk onduidelijk heb opgeschreven, mijn excuses. Hieronder een poging om het inzichtelijker te maken.

Een werknemer kan 1 of meerdere functies draaien/gedraaid hebben (nooit meerdere functies tegelijk).
Bij een functie horen 1 of meerdere opleidingen, in een koppeltabel wordt bijgehouden of de werknemer welke de functie vervuld een opleiding wel of niet gevolgd heeft.

Tabellen: (* = sleutel)
Tnaw
*werknemerID

Tfunctie
* functieID

Tfunctie_werknemer, koppeltabel om werknemer aan functie te koppelen
*functie_werknemerID
- werknemerID
- functieID

Topleiding_functie_werknemer, koppeltabel om opleidingen aan functie van werknemer te koppelen
- functie_werknemerID
- opleiding ID
- datum gevolgd

Topleidingen
*opleidingID


Formulieren:
Fzoek
- keuzelijst WID
- keuzelijst Achternaam

Foverzicht
- veld WID
- veld achternaam
- keuzelijst functies (waarbij de huidige functie reeds geselecteerd is (1e regel uit Qwerknemer_functies))
- subformulier NAW-gegevens
- subformulier opleidingen (behorende bij geselecteerde functie)
- subformulier functie (met info over geselecteerde functie)


Query's:
Qwerknemer_functies
- geeft als resultaat de functies waar de werknemer aan gekoppeld is met als invoer de waarden uit Fzoek. Criteria: [Formulieren]![Fzoek]![cmbwid] Or [Formulieren]![Fzoek]![cmbachternaam]

Qnaw
- geeft als resultaat de naw-gegevens van de in Fzoek geselecteerde werknemer. Criteria: [Formulieren]![Fzoek]![cmbwid] Or [Formulieren]![Fzoek]![cmbachternaam]

Qopleidingen
- geeft als resultaat de opleidingen weer behorende bij de geselecteerde functie/werknemer, hieruit kan opgemaakt worden of er nog opleidingen gevolgd moeten worden, of dat alles gevolgd is. Bij voorkeur op basis van de 1e regel van Qwerknemer_functies aangezien dat de meest recente functie is. Criteria: [Qwerknemer_functies]![functie_werknemerID]


Subformulieren:
SFnaw
- geeft de naw-gegevens weer op basis van Qnaw

SFfunctie
- geeft als resultaat de functiegegevens weer van de in de keuzelijst op Foverzicht geselecteerde functie, dit is altijd de eerste regel uit Qwerknemer_functies

SFopleidingen
- geeft de opleidingen weer op basis van Qopleidingen

Het subformulier SFnaw werkt prima. De subformulieren SFfunctie en SFopleidingen niet. Ik krijg bij het draaien van de query Qopleidingen de parametervraag.

Hoop dat het zo duidelijker is. Valt nog niet mee om iets wat in je hoofd zit duidelijk voor anderen op te schrijven.
 
Laatst bewerkt:
Volgens mij moet je alle subformulieren filteren met hetzelfde filter, want ze gebruiken dezelfde WerknemerID. Die overigens ook op je hoofdformulier zou moeten staan, zodat je in die filters met één verwijzing kan volstaan i.p.v. de huidige twee.
 
Maar als ik opleidingen ook op WID filter, krijg ik ook opleidingen naar voren die niet met de huidige functie te maken hebben maar van oudere functies zijn.
Vandaar dat ik wilde filteren op Topleiding_functie_werknemer.functie_werknemerID om er zo voor te zorgen enkel de opleidingen te zien die bij de geselecteerde functie horen.
 
Kun je doen met een TOP 1 query, waarbij je aflopend filtert op het ID. In die query zit maar één record, en dat is dus per definitie de goede.
 
Of je filtert op twee velden, net zo makkelijk. Functie en werknemer.
 
Bedankt, was te moeilijk aan het denken. Heb het nu werkend op een iets andere manier:
Na het invoeren van een WerknemerID op Fzoek wordt met een druk op de knop Foverzicht geopend.
Op Foverzicht is een keuzelijst geplaatst welke Qwerknemer_functies gebruikt om de functies van de werknemer weer te geven. Het filter in Qwerknemer_functies is het WerknemerID uit Fzoek, in deze query worden de resultaten gelijk op datum gesorteerd.

Ik heb de keuzelijst middels de standaardwaarde [cmbfunctie].[ItemData](0) het bovenste resultaat uit Qwerknemer_functies gegeven. Een verborgen veld van deze keuzelijst is FunctieID

De queries van de subformulieren gebruiken als filter de waarde FunctieID van de keuzelijst.

Nu alleen nog ervoor zorgen dat na het kiezen van een andere functie uit de keuzelijst, de queries opnieuw draaien en de subformulieren ververst worden :)
Nogmaals bedankt voor je snelle reacties, top!
 
Laatst bewerkt:
Kwestie van een ReQuery uitvoeren op de subformulieren. Die start je dan bij de gebeurtenis <Bij klikken> van de keuzelijst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan