Filter door waarde uit andere tabel

Status
Niet open voor verdere reacties.

theet

Gebruiker
Lid geworden
30 aug 2007
Berichten
144
Ik heb twee tabellen met waarden:

tabel 1) Datum
11-11-2011

tabel 2) Datum
1-1-2011
6-6-2010
3-6-2011
4-9-2011
2-8-2010

Als ik in een query het volgende plaats:

Veld: Jaar: Year([Datum]) (hierbij filter ik op tabel 2)
Critiria =2011 Dan krijg ik netjes alle waarden uit 2011 in de lijst

Nu wil ik alleen de waarden in het rapport weergeven uit het jaar 2011 d.m.v. de datum (jaartal) uit tabel 1
In 1 rapport moet de datum uit tabel 1 bovenaan komen te staan en tevens d.m.v. een subformulier de datums uit 2011.

Hoe pas ik dit filter toe in het formulier?
 
Laatst bewerkt:
Het rapport kun je op dezelfde manier filteren als de query. Het rapportfilter is dus: Year([Datum]) =2011.
De rest van je vraag is een kwestie van een groepering aanbrengen, met Koptgekst, en de juiste velden daarin zetten.
 
Het rapport kun je op dezelfde manier filteren als de query. Het rapportfilter is dus: Year([Datum]) =2011.
De rest van je vraag is een kwestie van een groepering aanbrengen, met Koptgekst, en de juiste velden daarin zetten.

Klopt, kan ik mij indenken...
Maar: nu is het zo dat ik in de query met een criteria [datum?] de datum in moet vullen die uit tabel 1 afgekomstig is, vervolgens krijg
ik in basis een rapport van die datum uit dat jaar. Daarnaast moeten dan ook de vastgelegde datums uit tabel 2 getoond worden in dit rapport van
het bepaalde jaar.

Het is dus niet de bedoeling dat ik d.m.v. een fixed jaartal in de Criteria de waarden tevoorschijn krijg...

Hoe kan ik dit realiseren, filteren?
 
Ergens in je antwoord ben je me kwijtgeraakt.... Het meest logische zou zijn dat je één query hebt als basis voor je rapport. Dat kan een query zijn die op basis van de twee tabellen, of je hebt twee rapporten, elk op basis van één van de tabellen/queries. Je geeft zelf aan dat je een subformulier(?) (ik neem aan dat je een subrapport bedoelt) gebruikt op je hoofdrapport. Als die twee aan elkaar gekoppeld zijn, zou je geen probleem moeten hebben. Maar zoals gezegd: ik ben de draad nu een beetje kwijt. Maar er anders een voorbeeld van, dan heb je vermoed ik heel wat sneller een antwoord :)
 
Ergens in je antwoord ben je me kwijtgeraakt.... Het meest logische zou zijn dat je één query hebt als basis voor je rapport. Dat kan een query zijn die op basis van de twee tabellen, of je hebt twee rapporten, elk op basis van één van de tabellen/queries. Je geeft zelf aan dat je een subformulier(?) (ik neem aan dat je een subrapport bedoelt) gebruikt op je hoofdrapport. Als die twee aan elkaar gekoppeld zijn, zou je geen probleem moeten hebben. Maar zoals gezegd: ik ben de draad nu een beetje kwijt. Maar er anders een voorbeeld van, dan heb je vermoed ik heel wat sneller een antwoord :)

Het probleem is, dat ik voor het rapport inmiddels 3 tabellen gebruik: "medewerkers", "functioneringsgesprekken" en nu "ziekteverzuim". tabel "medewerkers" en "functioneringsgesprekken" hebben een relatie, maar ook "medewerkers" en "ziekteverzuim". Simpel, omdat zowel functioneringsgesprekken als ziekteverzuim specifieke punten hebben die bij een bepaalde medewerker horen.

Het rapport heeft inderdaad 1 query met de tabellen "medewerkers" en "functioneringsgesprekken", maar als ik hier "ziekteverzuim" aan toevoeg, dan krijg ik een SQL conflict, ik denk dat dit met de relaties te maken heeft in access die ik gemaakt heb tussen de tabellen.

Het bestand totaal is 50 mb, dus moeilijk te posten...

Graag zou ik dus willen filteren op de datum waarop het functioneringsgesprek gehouden is en daarbij binnen dat jaar het ziekteverzuim af willen drukken.
Het rapport bevat nu in basis gegevens van de medewerker en het functioneringsgesprek, ik heb er een "formulier" aan toegevoegd met daarop het overzicht ziekteverzuim. Nu krijg ik alleen al het ziekteverzuim op het rapport afgedrukt, van meerdere jaren.

Misschien dat het zo een beetje duidelijker omschreven is?

relaties_tussen_tabellen.jpg

rapport: (d.m.v. query QRY-functionering met tabellen "tblmdw" en "tblfg")


kop: medewerkers gegevens zoals naam en funtie

------------------------------------------------------------------------------------------------

midden: rapportage functioneringsgesprek

------------------------------------------------------------------------------------------------

aansluitend: overzicht ziekteverzuim (formulier access in rapport gepaatst)
 
Laatst bewerkt:
Ik snap niet dat je query niet werkt; als de tabellen Medewerker-Functioneringsgesprek een relatie hebben (vermoedelijk op MedewerkerID) de tabellen Medewerker-Ziekteverzuim een relatie hebben (zal toch ook op basis van MedewerkerID zijn) dan moet je die drie tabellen prima in één query kunnen zetten. Al zie je dan, als je niks doet, alleen die medewerkers die zowel een functioneringsgesprek hebben gehad, alswel ziek zijn geweest. En ik zet er een klein vermogen op dat dit niet zal gelden voor alle werknemers! Er hoeft er maar één tussen te zitten die zo flauw is geweest om niet ziek te worden, en je ziet al niet iedereen terug in de query!
Je moet de relaties in de query dus aanpassen: de beide relaties moeten een Outer Join worden, waarbij je van Medewerkers iedereen ziet, en van de twee andere tabellen alleen die records waarvan de records overeenkomen. Klinkt misschien ingewikkelder dan het is: dubbelklik op de relatielijn en kies de juiste optie van de 3 (niet 1 dus...).
Je plaatje zegt niks; maak liever een schermafbeelding van het echte relaties venster, daar hebben we meer aan.
 
Wat is het toch fijn dat er mensen zijn die je snel en direct kunnen helpen!

Ik had de join eigenschappen wel ingesteld staan en niet optie 1, maar 3. Optie 2 bleek goed te zijn; m.a.w. de tabel met medewerkers is gevult, maar
het is niet altijd zo dat iedere medewerker ziek is geweest of een functioneringsgesprek heeft gehad. Mijn dank hiervoor!

Nu zou het alleen nog mooi zijn dat ik de 3 vragen: datum functioneringsgesprek, nummer medewerker en jaar ziekte in één form kan gieten... :-)
 
Dat lijkt mij simpeltjes een formulier maken met de query waar alle gegevens inzitten. Of denk ik nu te kort door de bocht?
 
Dat lijkt mij simpeltjes een formulier maken met de query waar alle gegevens inzitten. Of denk ik nu te kort door de bocht?

Ik heb vanmorgen gezocht maar nog niet gevonden, het zal zoiets zijn...
In het figuur heb ik de bijlagen opgenomen:

form-rap-funct.ziekte.jpg

Het komt er op neer dat ik de Niet-afhankelijk velden in wil vullen, op Printen klik en dat dan het rapport wordt weergegeven.
Als ik nu op de printer klik dan krijg ik de vragen vanuit de query, d.m.v. macro (access 2010)

[Ingesloten macro]

macro.jpg

Ik zou op basis van een gebeurtenisprocedure criteria vast willen leggen, nadat ik de drie velden heb ingevuld met "Datum gesprek", Pers.nummer" en "Ziektejaar", op print uitgevoerd worden....

Volgens mij moet de code iets als dit zijn? de code hieronder werkt in ieder geval niet...

waarin:
Me!Gespreksdatum = het veld in het formulier
Me!personeelsnummer = het tweede veld in het formulier
Me!Ziektejaar = het derde veld in het formulier

de gegevens worden gehaald uit de query: QRY-Functioneringsgesprek rapport+ziekte en qryRAP-Ziekteverzuim

------------------
Private Sub Knop10_Click()
On Error GoTo Err_Knop10_Click

Dim stDocName As String
Dim stlinkCriteria As String

stDocName = "RAP-Functioneringsgesprek+ziekte"
stlinkCriteria = "([QRY-Functioneringsgesprek rapport+ziekte]![Gespreksdatum]='" & Me!Gespreksdatum & _
"') And ([QRY-Functioneringsgesprek rapport+ziekte]![Personeelsnummer]='" & Me!personeelsnummer & _
"') And ([qryRAP-Ziekteverzuim]![Jaar]='" & Me!Ziektejaar & "')"
DoCmd.OpenReport stDocName, acViewPreview

Exit_Knop10_Click:
Exit Sub

Err_Knop10_Click:
MsgBox Err.Description
Resume Exit_Knop10_Click

End Sub
--------------------

Wie kan mij helpen?
 
Laatst bewerkt:
Hééél even dacht ik dat je het nodeloos quooten had afgeleerd, maar de aantrekkingskracht van de knop is toch groter gebleken dan de wil :) Even zonder gekheid: het is totaal overbodig, en maakt de draad nodeloos lastig te lezen als je elk bericht gelijk weer gaat quooten. Een fout die veel mensen maar niet afgeleerd krijgen overigens, dus je bent niet alleen...
Je vraagstelling klopt niet meer; je had het over een formulier.
Nu zou het alleen nog mooi zijn dat ik de 3 vragen: datum functioneringsgesprek, nummer medewerker en jaar ziekte in één form kan gieten... :-)
Maar nu begin je ineens over een rapport? Daar klopt iets niet helemaal. Je plaatje is ook van een rapport. Dus je zult wel een rapport bedoeld hebben in de vorige post. Alleen, als je het over een formulier hebt, krijg je natuurlijk ook een antwoord dat is gebaseerd op een formulier!
Maar een rapport baseer je natuurlijk op een query, en daar zou alles in moeten staan. Wil je een rapport zien dat is gefilterd op de velden uit je formulier, dan zet je in de query als criterium de formuliervelden. Daar hoef je verder niet voor te programmeren.
 
Je hebt helemaal gelijk, maar als het lekker loopt ben je al snel geneigd om dan maar in het hele verhaal door te vragen, ik had een ander topic aan moeten maken.
Ik was met een rapport bezig waarbij ik uit 3 tabellen waarden heb gebruikt. Dit is gelukt.
Later bedacht ik mij ineens dat het ook handig is om de 3 waarden, waarnaar ik opzoek ben, in te voeren in een formulier waarmee de waarden gefiltert worden, de waarden
die ik nu in een query als criteria heb gesteld: Criteria [Jaar?]
Voordat het rapport wordt afgedrukt komt er een popup met de vraag [Jaar?]

Het filter is geslaagd, maar dit laatste wat u zegt snap ik nog niet helemaal. Voordat ik op de knop klik vul ik de waarden in op het formulier, op basis van deze waarden filtert hij
en geeft hij een rapport weer met alleen het gesprek op een bepaalde datum, de medewerker en het ziektejaar.

Als het moet open ik hiervoor een nieuw topic, maar als het antwoord simpel is kan het misschien toch nog een plekje in dit topic krijgen?
 
Laatst bewerkt:
De parameter vraag [Jaar?] heb je nu vermoedelijk in de query zitten. Als je die vervangt door het veld uit je formulier, heb je de vraag niet meer, en fungeert het formulier als filter. Je criterium ziet er dan ongeveer zo uit:
Code:
Formulieren![frmRAPfunctioneren+Ziekte]![Ziektejaar]
En dat doe je ook voor de andere criteriumvelden.
Overigens heeft dit als nadeel dat het filter alleen werkt als alle velden zijn ingevuld; wil je op één of meer velden filteren, dan wordt het filter ietsje anders.
 
Bijna helemaal goed!
Ik moest alleen nog even het uitroepteken door een punt vervangen:

Formulieren![frmRAPfunctioneren+Ziekte].[Ziektejaar]

(kan overigens geen gebruik maken van HTML op dit forum?)
 
Wat bedoel je met het laatste? Je kunt een aantal opmaak tags gebruiken, die onder de knoppen zitten. Ik zou overigens voor een mooiere oplossing kiezen, waarbij je ofwel de filtering als waarde meegeeft, ofwel de parameters afvangt met een IF(ormulieren![frmRAPfunctioneren+Ziekte].[Ziektejaar] Is Null) check zodat de query/rapport altijd werkt, ook als je velden leeglaat.
 
Met het laatste bedoel ik dat ik in dit forum geen HTML kan gebruiken waardoor ik geen "code" als code kan weergeven...

1) Nu ben ik geïnteresseerd geraakt in dat laatste wat je aangeeft: als een waarde niet ingevuld wordt dan het rapport toch weergeven...
In een query heb ik dit nog niet voor elkaar gekregen:

Iif([Formulieren]![frm-RAPfunctioneren+ziekte].[Ziektejaar] IsNull....

2) Tevens heb ik nu een sub rapport "Ziekteverzuim" in het rapport "Functioneringsgesprekken" gemaakt, als er geen ziekteverzuim gegevens
bekend zijn over een bepaald jaar, hoeft hij dit sub rapport niet weer te geven. Ik heb al codes gevonden als:

Bij geen gegevens -> [Gebeurtenisprocedure] ->

Private Sub Report_NoData(Cancel As Integer)
Me.RAPZiekteverzuim.Visible = False
End Sub


of:

Private Sub RAPZiekteverzuim_Format(Cancel As Integer, FormatCount As Integer)
On Error Resume Next
If Me.RAPZiekteverzuim.Report.HasData Then
Me.RAPZiekteverzuim.Visible = True
Else
Me.RAPZiekteverzuim.Visible = False
End If
End Sub


Wederom geen succes behaald.
 
Je kunt, net als ik, de code natuurlijk gewoon intypen, als je het venster niet op <Geavanceerd> zet. Dan typ je [ code ] en [/ code ] (zonder spaties uiteraard) en dan werkt het ook.
Ik maak, om op het onderwerp terug te komen, vaak een vergelijking als veld die controleert of het formulierveld gevuld is of niet. Dat ziet er dan uit als:
Code:
Expr1:IFF(Formulieren![frmRAPfunctioneren+Ziekte].[Ziektejaar] Is Null;True;Formulieren![frmRAPfunctioneren+Ziekte].[Ziektejaar]=[Jaar])
Deze formule hoef je verder niet te zien, want die levert 0 of -1 op. Je filtert dit veld als volgt: <>ONWAAR.
Wat er dan gebeurt is het volgende: als het formulierveld leeg is, retourneert de IIF functie TRUE. Is het formulierveld niet leeg, dan maakt hij de vergelijking Formulieren![frmRAPfunctioneren+Ziekte].[Ziektejaar]=[Jaar]. Da's ook waar of niet waar als uitkomst. Door de ONWAAR records weg te filteren, heb je dus de geselecteerde waarden. En als het veld leeg is, zie je TRUE, en dan zie je alles van dat veld.
 
Ik heb van alles geprobeerd, maar het lukt niet.

Als ik de code:

Code:
Expr1:IFF(Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar] Is Null;True;Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar]=[Jaar])

gebruik, krijg ik de foutmelding "De expressie bevat een ongedefinieerde functie IFF" (Wat is overigens IFF, en als ik Iif doet de code niets...

Jaar is overigens:
Code:
Jaar: Year([Datumziekmelding])

Tevens wil ik het subrapport verbergen indien er geen waarden in staan.
 
Laatst bewerkt:
Oeps, typfoutje :o
Code:
Expr1:[B]IIF[/B](Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar] Is Null;True;Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar]=[Jaar])
Maar je geeft zelf aan dat IIF ook niks doet? Heb je het criterium wel ingesteld?
 
Wat is het criterium?

Ik heb als criterium ingevuld onder de code in het veld:
Code:
Expr1:IIF(Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar] Is Null;True;Formulieren![frm-RAPfunctioneren+Ziekte].[Ziektejaar]=[Jaar])

Criteria: <> onwaar

en de code moet volgens mij zijn:

Code:
Expr1: IIf([Formulieren]![frm-RAPfunctioneren+ziekte].[Ziektejaar] Is Null;Waar;[Formulieren]![frm-RAPfrunctioneren+ziekte].[Ziektejaar]=Year([DatumZiekmelding]))
omdat ik vanuit het veld DatumZiekmelding het jaartal bereken...

maar dat krijg ik bij het openen van het rapport een popup met daarin "Formulieren!frm-RAPfunctioneren+Ziekte.Ziektejaar" die ik in moet vullen...
 
Laatst bewerkt:
Dan heb je het formulier niet open staan.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan