Print een enkele record met subformulieren

Status
Niet open voor verdere reacties.

joepvugts013

Gebruiker
Lid geworden
1 okt 2015
Berichten
6
Goedendag ik heb een probleem.
Ik heb een database met diverse tabellen.
Ik heb klanten en onder een klant kunnen meerdere orders of certificaten staan en onder certificaten en/of orders kunnen meerdere producten zijn.

Nou ben ik bezig met een formulier te maken waarin ik een order wil uitprinten met daarin de producten binnen die order en de klant gegevens.

Maar ik krijg het maar niet werkend om met een subformulier een print te maken naar een rapport....

Bekijk bijlage Database.rar
 
Hoi,
Ik zie geen enkele Query in uw vbtje en volgens mij zit daar uw vraag?
 
Uhm ja ik denk het dan...

Ik ben nieuw met access, dus hoogstwaarschijnlijk zie ik van alles over het hoofd....
 
Je hebt voor rapporten geen queries nodig, dus om te stellen dat daar het probleem ligt? Ik kijk vanavond ook nog wel even.
 
OK, een blik geworpen :).
1: Je hebt een tabel Producten, en een tabel Orders. Normaal gesproken worden producten besteld middels een order, en kan een order bestaan uit meerdere artikelen. In jouw opzet gaat dat niet. Sterker nog: je hebt in de tabel Producten en veld Order opgenomen. En dat is een heel slecht idee, want nu kun je alleen de laatste (actieve) order opslaan van een product. Dat wil je meestal niet: je wilt een historie opbouwen van alle orders. Daarom gebruik je meestal een koppeltabel OrderRegels die je koppelt met een één-op-veel relatie met Orders (één order kan meerdere producten = meerdere orderregels) bevatten. Daarnaast neem je in OrderRegels het veld ProductID op: één product kan meerdere keren besteld worden! En op die manier maak je dus bestellingen. Wat de tabel Certificaten doe, zie ik zo gauw niet. Maar dat weet je zelf waarschijnlijk wel.
Maar je moet dus in ieder geval je Orders procedure aanpassen!
 
Bedankt voor je reactie!

De product ID is een uniek nummer wat een product mee krijgt, dus er kunnen meerdere dezelfde producten verkocht worden maar ieder met een eigen product id.

De situatie:
Een klant besteld een x aantal producten, deze producten vormen samen en order. Van deze order moet een print komen met de producten, klantgegevens, producten en bijbehorende productId. 1 klant kan meerdere orders maken.
Hier moet een klant dus meerdere orders kunnen hebben, en een order meerdere producten. En aan een product hangt dus een ordernummer en klantgegevens.

Vervolgens moeten deze producten na een jaar gekeurd worden, dan worden de producten die in een keuring worden aangeboden en verwerkt in een certificaat. Hier word dus de productId gecontroleerd en moet er een print worden gemaakt van het certificaat. Maar een product kan dus vanaf hier een certificaatnummer mee krijgen maar dat certificaatnummer zou ook aan een andere klant kunnen hangen (als de klant bv het product heeft doorverkocht).

Al met al wel een ingewikkeld plaatje misschien.

En ik begin nu al een klein beetje door de bomen het bos niet meer te zien....


Heb je een advies hoe ik deze database het beste zou kunnen opbouwen?
 
De product ID is een uniek nummer wat een product mee krijgt, dus er kunnen meerdere dezelfde producten verkocht worden maar ieder met een eigen product id.
Dat is inderdaad zoals het hoort :). Eigenlijk beschrijf je exact de situatie die ik in berichtje #6 beschreef, en die je dus niet hebt. Er ontbreekt een tabel (OrderRegels noem ik 'm maar even) en het veld
En aan een product hangt dus een ordernummer en klantgegevens.
En dat is dus precies verkeerd: OrderID hoort niet thuis in de tabel Producten want een product hangt aan een order.

Nu je certificaten, want dat is nog een beetje mistig. Een product moet na een jaar gekeurd worden, maar is dat gerekend vanaf het moment dat het bij jullie binnen is? Dus je bestelt voorraad, en vanaf dat moment gaat het jaar lopen? Of begint het jaar op het moment dat je een product verkoopt? En de producten blijven dan bij jullie geregistreerd staan en jullie blijven dan ook de certificaten verzorgen? In dat geval moet je denk ik een onderscheid maken tussen Producten en Artikelen. Producten vallen dan, zeg maar, in een inventaris lijst en de artikelen gebruik je voor de orders.

Dus, voorbeeldje van het artikel Flumkorper met artikelnummer 123 worden 10 exemplaren besteld door klant A, en 12 voor klant B. Dan heb je in de tabel Certificaten 22 records, voor elk verkocht apparaat één. Die hebben allemaal een uniek Serienummer, een Artikelnummer, een KlantID en een certificaatdatum. En vast nog wel meer velden.
Zodra een bestelling geleverd wordt, kun je de tabel Certificaten vullen met de certificaatrecords, want dan weet je pas de serienummers, lijkt mij.

Zie ik het zo een beetje helder?

Ik heb het beeld van de certificaten nog niet helemaal rond; ik snap dat een product gekeurd moet worden,
 
En dat is dus precies verkeerd: OrderID hoort niet thuis in de tabel Producten want een product hangt aan een order.

Oke die haal ik eruit. Wil dat dan zeggen dat ik uit de order tabel ook de klant haal?


Nu je certificaten, want dat is nog een beetje mistig. Een product moet na een jaar gekeurd worden, maar is dat gerekend vanaf het moment dat het bij jullie binnen is? Dus je bestelt voorraad, en vanaf dat moment gaat het jaar lopen? Of begint het jaar op het moment dat je een product verkoopt? En de producten blijven dan bij jullie geregistreerd staan en jullie blijven dan ook de certificaten verzorgen? In dat geval moet je denk ik een onderscheid maken tussen Producten en Artikelen. Producten vallen dan, zeg maar, in een inventaris lijst en de artikelen gebruik je voor de orders.

Dus, voorbeeldje van het artikel Flumkorper met artikelnummer 123 worden 10 exemplaren besteld door klant A, en 12 voor klant B. Dan heb je in de tabel Certificaten 22 records, voor elk verkocht apparaat één. Die hebben allemaal een uniek Serienummer, een Artikelnummer, een KlantID en een certificaatdatum. En vast nog wel meer velden.
Zodra een bestelling geleverd wordt, kun je de tabel Certificaten vullen met de certificaatrecords, want dan weet je pas de serienummers, lijkt mij.

Van product x worden er 2 stuks verkocht aan klant Piet. met serienummer: x1 en x2. Deze serienummers moeten in de database worden geregistreerd op moment van verkoop. Dus in een formulier voer ik in: klantgegevens, een ordernummer met datum, en 2 maal product x en die geef ik serienummer x1 en x2. Dit formulier wil ik opslaan en uitprinten.
Tot zover de order.
Nu de certificaten:
12 maanden na aankoop moet product x gekeurd worden. Maar Piet heeft x2 al verkocht, dus stuurt x1 op. Ik keur dit product en voer in een formulier in: klantgegevens, certificaatnummer (pas vanaf hier krijgt het product een certificaatnummer!) met datum en ik selecteer of voer in: product x met serienummer x1. Deze sla ik op en maak een print.

Nu komt de koper van x2, Jan, die wil x2 laten keuren. Zelfde riedeltje.

Nu staat dus in mijn database:
- product x, serienummer x1, gekocht door Piet met ordernummer, en gekocht op een bepaalde datum. ter keuring aangeboden door piet en geregistreerd in een certificaat een jaar na die datum.
- product x, serienummer x2, gekocht door Piet met ordernummer, en gekocht op een bepaalde datum. ter keuring aangeboden door Jan en geregistreerd in een certificaat een jaar na die datum.
 
Wil dat dan zeggen dat ik uit de order tabel ook de klant haal?
Nee, juist niet! Een klant plaatst een order, dus als je in de ordertabel het KlantID niet opneemt, hoe weet je dan welke klant welke order geplaatst heeft? Ik heb een beetje zitten stoeien met je db, en een nieuwe tabelindeling gemaakt die volgens mij wel doet wat je wil. Al heb ik je laatste opmerking daar (bewust) niet in verwerkt. Ik vind namelijk niet dat je in je certificaten hoeft op te nemen wie het apparaat gekocht heeft, da's toch helemaal niet boeiend? Bovendien heb je daar ook het veld OrderID in zitten, en dat is genoeg want daarmee kun je de koper altijd achterhalen. Wél heb je dus een apart veld nodig voor KlantID, want de klant die hem inlevert voor een certificaat hoeft niet dezelfde te zijn als de klant die hem heeft gekocht.
Kijk maar eens. Je formulieren overigens zullen geheid niet werken, het is grotendeels een compleet nieuwe db geworden :).
 

Bijlagen

Je bent geweldig!!

Welke tabellen gebruik ik dan voor de formulieren die ik wil gaan maken?

Ik wil een formulier: order invoeren en daar een print van kunnen maken.
En een certificaat invoeren en daar een print van kunnen maken.

Bij beide formulieren wil ik ook een zoekoptie of een ander formulier realiseren zodat je een order of een certificaat of een klant terug zou kunnen halen.



(als ik teveel vraag moet je het zeggen hè.... :rolleyes:)
 
Ik wil een formulier: order invoeren en daar een print van kunnen maken.
Dat zijn 2 verschillende zaken, en die moet je dus op 2 verschillende manieren bouwen. Voor het invoeren/muteren gebruik je een formulier dat je baseert op de tabel Order, met OrderRegels als subformulier. Voor het afdrukken maak je een rapport dat je baseert op Orders + OrderRegels + andere tabellen die je nodig hebt op het rapport, zoals de klantgegevens.
Doorgaans zul je dan één rapport tegelijk afdrukken (actieve order op formulier en daarvoor gebruik je dan een filter op het rapport op basis van het actieve OrderID.
Iets vergelijkbaars doe je voor je certificaten.

Zoeken kun je op verschillende manieren doen: een hoofdformulier maken waarin je orders, klanten, certificaten etc. zoekt. Of een zoeklijst op het Orderformulier. Of een formulier wat op de klanten is gebaseerd met de Orders als subformulier. Wat je maar wilt dus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan