Rapport openen o.b.v. kruistabelquery met parameter

Status
Niet open voor verdere reacties.

ELS0

Nieuwe gebruiker
Lid geworden
19 feb 2018
Berichten
3
Ik heb een startformulier opgemaakt, waar een regio gekozen kan worden. Daarnaast heb ik een kruistabelquery opgemaakt waar deze regio ook als veld opgenomen is - ik wil enkel de records van die regio die in startformulier geselecteerd werd. Dit lukt. Nu wil ik van deze query een rapport maken, die ik open vanuit het startformulier.

Bij het openen van dat rapport krijg ik foutmelding: 'fout 2465 tijdens uitvoering: kan het veld Korps niet vinden waarnaar wordt verwezen in de expressie'.

Ik laat een gelijkaardig rapport openen vanuit het startformulier met een gewone query, zonder problemen.
Ik vermoed dus dat het probleem zit in het feit dat ik een parameter gebruik in een rapport dat gebaseerd is op een kruistabelquery.

Ter info:
Dit is de kruistabelquery waar ik het rapport op baseer:
PARAMETERS [formulieren]![frm_start]![cmdKorps] Text ( 255 ), [Formulieren]![frm_Start]![cmdJaar] Short;
TRANSFORM First(qry_maand_resultaten.Punten) AS EersteVanPunten
SELECT qry_maand_resultaten.Agentnr, [Naam] & " " & [Voornaam] AS Schutter, qry_maand_resultaten.Jaar, qry_maand_resultaten.Korps, qry_maand_resultaten.Naam, qry_maand_resultaten.Voornaam
FROM qry_maand_resultaten RIGHT JOIN tbl_maand ON qry_maand_resultaten.Maand = tbl_maand.Id
WHERE (((qry_maand_resultaten.Korps)=[Formulieren]![frm_Start]![cmdKorps]) AND ((qry_maand_resultaten.Jaar)=[Formulieren]![frm_Start]![cmdJaar]))
GROUP BY qry_maand_resultaten.Agentnr, [Naam] & " " & [Voornaam], qry_maand_resultaten.Jaar, qry_maand_resultaten.Korps, qry_maand_resultaten.Voornaam, qry_maand_resultaten.Naam, qry_maand_resultaten.Jaar, qry_maand_resultaten.Naam, qry_maand_resultaten.Voornaam
PIVOT tbl_maand.Maand;

Op het formulier wordt zowel het jaar als het korps geselecteerd op basis van een tabel:
cmdJaar: SELECT tbl_jaar.Jaar FROM tbl_jaar;
cmdKorps: SELECT tblKorps.Korps FROM tblKorps;

De query loopt, maar het rapport niet, dus vermoedelijk is er probleem met het maken van een rapport op basis van die kruistabelquery, gecombineerd met het gebruik van parameters?
Kan ik dit toch oplossen (ben geen specialist ter zake)?
 
Allereerst welkom bij HelpMij. Op basis van een query, waarvan je zelf al aangeeft dat die werkt, kunnen we niet zoveel. Het probleem zit 'm in het rapport, en we moeten dus eigenlijk dat rapport kunnen bekijken. Dus als je een voorbeeldje (gezipt; HelopMij pikt geen Access bestanden) mee kunt sturen, dan kunnen we er naar kijken. Ik heb al wel een licht idee trouwens, maar de foutmelding die je krijgt komt daar niet mee overeen, dus vandaar dat ik de db nodig heb.
 
Hierbij het bestand met startformulier - het probleem zit hem in het rapport om de maandelijkse resultaten op te vragen.
 

Bijlagen

  • test_ICG.zip
    660,7 KB · Weergaven: 30
Het probleem was inderdaad wat ik vermoedde, al is de getoonde foutmelding nogal abstract, want die heeft niks met het probleem te maken. Maar dat komt wel vaker voor bij Microsoft :). Het probleem zit 'm niet in het gebruik van de parameters an sich, maar meer in wat het resultaat is van die query en wat je daarvan terugziet op het rapport. Wat is het probleem? Je hebt een kruistabel query gemaakt die de maanden als kolomkop genereert. Bij een grote dynaset is dat geen probleem, omdat je alles wel zult zien in de query. In dit geval: alle maanden. Daar maak je dan vervolgens een rapport van, en de wizard (als je die gebruikt hebt) zal dan alle maanden netjes in het rapport zetten. Of je doet dat zelf, maakt niet uit. Maar dan. Je gaat de query nu filteren, en dat betekent dat het aantal records drastisch zakt. Wellicht is de dynaset dan zo klein, dat niet alle maanden meer in het resultaat zitten. Filter ik bijvoorbeeld op "Geel" dan zit er geen waarde in de maand "Augustus". En dat zie je terug in je query: de maand Augustus zit dan niet in de dynaset. Maar daar zit dan gelijk een probleem, want dat veld zit wél in je rapport! En dat mag dus niet. Alle velden die op je rapport staan, moeten ook in de query zitten.
Hoe doe je dat? Door in de kolomeigenschappen alle namen te zetten van alle maanden. Dat heeft twee voordelen: 1) je rapportvelden zitten ook altijd in de query en 2) je hebt de query gelijk goed gesorteerd op maandvolgorde (als je dat wilt natuurlijk, op je rapport maakt dat niet zoveel uit).
Dit is dan de SQL die de query maakt met vaste kolomkoppen, ongeacht of er data is of niet.

PHP:
PARAMETERS [formulieren]![frm_start]![cmdKorps] Text ( 255 ), [Formulieren]![frm_Start]![cmdJaar] Short;
TRANSFORM First(qry_maand_resultaten.Punten) AS EersteVanPunten
SELECT qry_maand_resultaten.Agentnr, [Naam] & " " & [Voornaam] AS Schutter, qry_maand_resultaten.Korps
FROM qry_maand_resultaten RIGHT JOIN tbl_maand ON qry_maand_resultaten.Maand = tbl_maand.Id
WHERE (((qry_maand_resultaten.Jaar)=[Formulieren]![frm_Start]![cmdJaar]) AND ((qry_maand_resultaten.Korps)=[Formulieren]![frm_Start]![cmdKorps]))
GROUP BY qry_maand_resultaten.Agentnr, [Naam] & " " & [Voornaam], qry_maand_resultaten.Korps
PIVOT tbl_maand.Maand In ("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December");

En die lost dus je 'probleem' met het korps op, wat dus eigenlijk niet bestaat.
 
Super!!
Probleem is nu inderdaad opgelost.

Heel erg bedankt!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan