Rapport met Subrapport wordt meerdere keren afgedrukt.

Status
Niet open voor verdere reacties.

Geert77

Gebruiker
Lid geworden
25 mei 2007
Berichten
63
Goedenavond,

Ik probeer een rapport af te drukken vanaf een formulier. Op dit formulier staan de algemene gegevens van een project.

In een andere tabel kan ik gebeurtenissen/afspraken toevoegen. Deze verwijzen in de tabel naar het project.

Nu heb ik een rapport gemaakt waar de gegevens van het project in staan. Onderaan heb ik een subrapport ingevoegd met de gebeurtenissen.

In principe werkt dit. Echter als ik een project heb met bijvoorbeeld 6 gebeurtenissen, dan krijg ik 6 keer het zelfde rapport op de afdruk.

Kan iemand mij verder helpen?

Alvast bedankt.
 
Ik vraag me af of je wel een subrapport nodig hebt; je kunt makkelijk een rapport maken op basis van een project, en in hetzelfde rapport in de detailsectie de gebeurtenissen laten zien. Daarvoor moet je het rapport wel groeperen op ProjectID. Of is er een specifieke reden om een subrapport te gebruiken? En zo ja, heb je dat wel goed gekoppeld aan het hoofdrapport?
 
Ik zal eens naar de db kijken. Eén ding valt al wel gelijk op: je koppelingen in het Relaties venster zijn waardeloos, en kun je op deze manier net zo goed weg laten. Je moet <Referentiële Integriteit afdwingen> altijd gebruiken bij een relatie, anders kun je net zo goed de velden [L_Medewerker] en P_Calculatiewijze] aan elkaar koppelen. Die link doet namelijk exact hetzelfde (helemaal niks...)
 
En het is zoals ik dacht: je hebt in je rapport geen koptekst op basis van je projecten. Zou je dat wel doen, dan heb je geen subrapport nodig, maar kan alles in één rapport.
 
Bedankt voor je snelle hulp.

Zo werkt het zoals ik het bedoelde.

Ik kan nog niet helemaal herleiden hoe je het heb opgelost. Heb je alleen aanpassingen in het rapport gedaan?
 
Ik zag in venster relaties dat je d.m.v. het venster "relaties bewerken" de instelling referentiële integriteit hebt aangepast. Wat doet deze instelling precies. In mijn handboek kan ik hier niets over vinden?
 
Zoals ik gisteren al zei, waren jouw koppelingen zoals je ze gemaakt had waardeloos omdat je de optie <Referentiële Integriteit afdwingen> niet hebt aangevinkt. Deze vink zorgt er voor dat je in de gerelateerde tabel (de veelkant dus) geen waarden kunt opslaan die je niet in je brontabel hebt staan. In jouw geval heb je een tabel met projecten, en een tabel met gebeurtenissen die op die projecten betrekking hebben. Het is volslagen onzin om in de tabel Log gebeurtenissen op te slaan van niet-bestaande projecten, net zo onlogisch als dat je goederen verkoopt (in de tabel bestellingen) aan niet-bestaande klanten. Om dat te voorkomen, heb je dus de optie <Referentiële Integriteit afdwingen> nodig. Deze zorgt er voor, dat je in de tabel Log geen records mag opslaan met ProjectID's die je niet in de tabel Projecten hebt. Vandaar ook mijn opmerking dat je, als je die optie niet gebruikt, elk willekeurig veld aan elk willekeurig ander veld kunt koppelen; als er toch niks gecontroleerd wordt, maakt dat ook niet meer uit!
Overigens heb je de data wel goed ingevoerd, want je kunt bij elke koppeling de optie alsnog aanzetten. Dat betekent dus, dat er in geen enkele gekoppelde tabel niet-toelaatbare gegevens staan. Maar dat had dus wel gekund. Dat je dit onderwerp niet in een boek bent tegengekomen verbaast me wel, want dit principe (data-controle op tabelniveau) is vrij essentieel in een database!
 
Bedankt voor je duidelijke uitleg. Weer wat geleerd. Het is inderdaad vreemd dat dit niet niet het handboek staat. (Kan ook zijn dat ik er overheen gelezen heb). Het boek wat ik gebruik is :"Handboek Microsoft Acces 2010" van Wilfred de Freiter.

Ik heb het rapport verder getest. Nu kom ik het probleem tegen dat bij een project waar geen "afspraken of gebeurtenissen" bij horen, het rapport leeg is. Bij Projectnummer staat dan "#Type!".

Wat kan hier de oorzaak van zijn?
 
Geef eens een voorbeeld van zo'n record?
 
Laat het voorbeeld maar zitten; je kunt het zelf testen door een nieuw project aan te maken. Het rapport is gebaseerd op een query die er vanuit gaat dat een project ook logfiles heeft. Door de query van het rapport aan te passen is het probleem opgelost.
Code:
SELECT Projecten.P_Projectnummer, Projecten.P_Project, Projecten.P_Projectomschrijving, Projecten.P_Opdrachtgever, Projecten.P_Offertenummer, Projecten.P_Discipline, Projecten.P_Status, Projecten.P_Datum_aanvraag, Projecten.P_Offerte_uiterlijk_gereed, Projecten.P_Offertedatum, Projecten.P_Offertebedrag, Projecten.P_Calculatiewijze, Projecten.P_Opdrachtdatum, Projecten.P_Aanneemsom, Projecten.P_Gefactureerd, Projecten.P_Start_uitvoering, Projecten.P_Geplande_oplevering, Projecten.[P_Montage-uren E], Projecten.[P_Montage-uren W], Projecten.[P_Projectmedewerker 1], Projecten.[P_Projectmedewerker 2], Projecten.P_Locatie_papieren_archief, Projecten.P_Locatie_digitale_archief, Projecten.P_Bijzonderheden, Projecten.P_Nacalculatie, Projecten.P_Opleverdatum, Projecten.P_Afgesloten, Projecten.P_ID, Logboek.L_Project, Logboek.L_Datum, Logboek.L_Omschrijving, Logboek.L_Medewerker
FROM Projecten LEFT JOIN Logboek ON Projecten.P_ID = Logboek.L_Project;
 
Super, nu werkt het rapport zoals de bedoeling is.

Nog één vraagje. Om we wat te bekwamen in Access heb ik dus een handboek doorgewerkt. Vervolgens ben ik gestart met het maken van een database. Nu loop ik dus tegen de bovenstaande problemen aan? Wat raad jij me aan om me beter te bekwamen in het werken met Acces. Zijn er nog geschikte naslagwerken die me iets verder brengen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan