Ik heb een database gemaakt die verwijst naar een MS Oracle database en een text bestand (beide worden d.m.v. een koppeling ingelezen in MS Access). In de Oracle dbase staan bepaalde activiteiten en komt uit een systeem. Het text bestand is een output file van alle bestanden op een bepaalde locatie en bevat een overzicht van alle brieven (commando dir /s). Jullie snappen het al: je wilt weten welke activiteiten niet hebben geleid tot een brief, zodat de brief alsnog verstuurd kan worden.
Als ik via een formulier een bepaalde periode wil ingeven om op te querieen werkt dit bij een eenvoudig (plat) rapport. Ik laat bij het rapport een invul formulier opstarten waar de periode ingegeven kan worden en in de query verwijs ik naar de formulier velden als parameter waardes. (ik had ergens gelezen dat dit de standaard werkwijze is om gebruikers parameter waardes in queries in te laten geven). Samen met wat eenvoudige macro's werkt dit prima.
Wanneer ik dit echter probeer voor gegevens die daarna gebruikt moeten worden in een draaitabel werkt dit niet. Wat doe ik precies?
Query 1: opnemen velden uit text bestand en datum velden omzetten naar datum doormiddel van Cdate() of Cvdate()
Query 2: gebaseerd op query 1, hier wordt verwezen naar de parameter velden uit het formulier, dus hier vindt de selectie plaats.
Query 3: is een draaitabel query op basis van query 2: binnen de gekozen periode de aantallen per .....
Rapport 3: rapportje op basis van query 3.
Ik blijf de volgende foutmelding krijgen: “The microsoft Jet-database-engine kan Forms!frm_periode_ingeven!datum_tot niet herkennen als een geldige veldnaam of expressie”.
Wat ik echter ook probeer in query 2: ik krijg voortdurend fouten dat de parameters te ingewikkeld zijn. Wat ik al geprobeerd heb:
- query 1 heb ik geëxporteerd naar een Tabel (inclusief het datumveld met datuminstellingen, dit is dus echt een datumveld) en vervolgens heb ik query 2 op die tabel gebaseerd. Ook als ik dus een echt datumveld gebruik, blijf ik een foutmelding krijgen.
- Query 2 heb ik opgesplitst in twee velden (een veld >= ingegeven datum_van en een veld <=ingegeven datum_tot)
- In query 2 een invul box oproepen door middel van [geef input], geeft dezelfde foutmelding als via het formulier
- In query 2 gewoon hard de datum criteria invullen, dan werkt het wel.
- in query 3 gewoon hard de datum criteria invullen, dan werkt het ook.
De SQL statement van query 2 is:
SELECT [11_eerste_brief_hulp].Patnr, [11_eerste_brief_hulp].Brief_datum, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].Geb_datum, [11_eerste_brief_hulp].Arts, [11_eerste_brief_hulp].Streepje, [11_eerste_brief_hulp].Secr, [11_eerste_brief_hulp].Briefdatum_hack, FROM 11_eerste_brief_hulp
WHERE ((([11_eerste_brief_hulp].Briefdatum_hack) Between [Forms]![frm_periode_ingeven]![datum_van] And [Forms]![frm_periode_ingeven]![datum_tot]));
Als ik query 3 ombouw tot de volgende statement werkt het:
TRANSFORM Count([11_eerste_brief_hulp].Patnr) AS AantalVanPatnr
SELECT [11_eerste_brief_hulp].rap_rang, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].omschrijving, 1 AS groep, Count([11_eerste_brief_hulp].Patnr) AS [Totaal Patnr]
FROM 11_eerste_brief_hulp
WHERE ((([11_eerste_brief_hulp].Briefdatum_hack) Between #1/1/2008# And #6/1/2008#))
GROUP BY [11_eerste_brief_hulp].rap_rang, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].omschrijving, 1
PIVOT [11_eerste_brief_hulp].Secr;
Als ik de harde datum velden vervang voor de formulier velden, werkt het niet.
Hoe kan ik door middel van een eenvoudig formulier query parameters invoeren en toch een kruistabel query uitvoeren?
Gaarne jullie deskundige input met ideeen zodat ik verder kan zoeken.
Als ik via een formulier een bepaalde periode wil ingeven om op te querieen werkt dit bij een eenvoudig (plat) rapport. Ik laat bij het rapport een invul formulier opstarten waar de periode ingegeven kan worden en in de query verwijs ik naar de formulier velden als parameter waardes. (ik had ergens gelezen dat dit de standaard werkwijze is om gebruikers parameter waardes in queries in te laten geven). Samen met wat eenvoudige macro's werkt dit prima.
Wanneer ik dit echter probeer voor gegevens die daarna gebruikt moeten worden in een draaitabel werkt dit niet. Wat doe ik precies?
Query 1: opnemen velden uit text bestand en datum velden omzetten naar datum doormiddel van Cdate() of Cvdate()
Query 2: gebaseerd op query 1, hier wordt verwezen naar de parameter velden uit het formulier, dus hier vindt de selectie plaats.
Query 3: is een draaitabel query op basis van query 2: binnen de gekozen periode de aantallen per .....
Rapport 3: rapportje op basis van query 3.
Ik blijf de volgende foutmelding krijgen: “The microsoft Jet-database-engine kan Forms!frm_periode_ingeven!datum_tot niet herkennen als een geldige veldnaam of expressie”.
Wat ik echter ook probeer in query 2: ik krijg voortdurend fouten dat de parameters te ingewikkeld zijn. Wat ik al geprobeerd heb:
- query 1 heb ik geëxporteerd naar een Tabel (inclusief het datumveld met datuminstellingen, dit is dus echt een datumveld) en vervolgens heb ik query 2 op die tabel gebaseerd. Ook als ik dus een echt datumveld gebruik, blijf ik een foutmelding krijgen.
- Query 2 heb ik opgesplitst in twee velden (een veld >= ingegeven datum_van en een veld <=ingegeven datum_tot)
- In query 2 een invul box oproepen door middel van [geef input], geeft dezelfde foutmelding als via het formulier
- In query 2 gewoon hard de datum criteria invullen, dan werkt het wel.
- in query 3 gewoon hard de datum criteria invullen, dan werkt het ook.
De SQL statement van query 2 is:
SELECT [11_eerste_brief_hulp].Patnr, [11_eerste_brief_hulp].Brief_datum, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].Geb_datum, [11_eerste_brief_hulp].Arts, [11_eerste_brief_hulp].Streepje, [11_eerste_brief_hulp].Secr, [11_eerste_brief_hulp].Briefdatum_hack, FROM 11_eerste_brief_hulp
WHERE ((([11_eerste_brief_hulp].Briefdatum_hack) Between [Forms]![frm_periode_ingeven]![datum_van] And [Forms]![frm_periode_ingeven]![datum_tot]));
Als ik query 3 ombouw tot de volgende statement werkt het:
TRANSFORM Count([11_eerste_brief_hulp].Patnr) AS AantalVanPatnr
SELECT [11_eerste_brief_hulp].rap_rang, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].omschrijving, 1 AS groep, Count([11_eerste_brief_hulp].Patnr) AS [Totaal Patnr]
FROM 11_eerste_brief_hulp
WHERE ((([11_eerste_brief_hulp].Briefdatum_hack) Between #1/1/2008# And #6/1/2008#))
GROUP BY [11_eerste_brief_hulp].rap_rang, [11_eerste_brief_hulp].Briefcode, [11_eerste_brief_hulp].omschrijving, 1
PIVOT [11_eerste_brief_hulp].Secr;
Als ik de harde datum velden vervang voor de formulier velden, werkt het niet.
Hoe kan ik door middel van een eenvoudig formulier query parameters invoeren en toch een kruistabel query uitvoeren?
Gaarne jullie deskundige input met ideeen zodat ik verder kan zoeken.
[ Voor 21% gewijzigd door AdB op 04-11-2008 10:32 ]
AdB