Data weergeven na het maken van selectie in keuzelijst

Status
Niet open voor verdere reacties.

xiaoie

Gebruiker
Lid geworden
17 jan 2014
Berichten
12
Hallo mensen,


Voor een gedeelte van mijn afstudeeronderzoek ben ik momenteel bezig met het een en ander programmeren m.b.v. Access. Nu ben ik niet bepaald zeer bedreven met het gebruik van dit programma, en alle hulp die ik kan krijgen zou ik dan ook zeer op prijs stellen :)

In ieder geval, wat ik graag voor elkaar zou willen krijgen is als volgt:
Ik wil d.m.v. een selectie uit een keuzelijst specifieke data weergeven op een formulier; er wordt een artikel uit de lijst gekozen, wat vervolgens is opgebouwd uit meerdere (of tenminste 1) grondstof(fen). Elk van deze grondstoffen heeft uiteraard ook kenmerkende eigenschappen (naam, beschrijving, prijs etc.).

Nu wil ik dus proberen om met 1 selectie zoveel mogelijk relevante gegevens op het formulier af te beelden, wat er ongeveer zo uit moet komen te zien:

Artikelcode (deze moet men selecteren/invoeren) en op basis daarvan wordt getoond

Grondstof 1: naam/omschrijving + prijs
Grondstof 2: naam/omschrijving + prijs
.....
.....
Grondstof X: naam/omschrijving + prijs

Voor zover ik weet beschik ik al over de benodigde data, waarbij artikelopbouw is aangeduid als:
itemprod: 100016 - itemreq: xxxxxx
itemprod: 100016 - itemreq: xxxxxx
itemprod: 100016 - itemreq: xxxxxx

In bovenstaand voorbeeld bestaat het artikel dus uit 3 grondstoffen, wat wordt aangeduid door het eindproduct meermaals weer te geven met iedere keer een andere "requirement".

Heeft iemand misschien enige tips en/of ideeën hoe ik hetgeen ik voor elkaar wil krijgen ook daadwerkelijk gedaan krijg in Access?
Bijgevoegd is tevens de database met daarin de (gedeeltelijke) tabel met gegevens.
Bekijk bijlage HelpMij Vraagstuk.rar

Overigens ben ik momenteel ook bezig met het doornemen van de Access Cursus die is aangeboden op dit forum (halverwege Hoofdstuk 9) en hoewel ik er al zeker het een en ander van heb geleerd (waarvoor alle dank trouwens :)), zou extra hulp toch meer dan welkom zijn.

Alvast hartelijk bedankt voor een ieder die mij op weg kan helpen :)
 
Ik snap je db niet helemaal, want daar staat alleen een keuzelijst in met Itemcodes. Wat moet er gebeuren als je een item hebt geselecteerd?
 
Oohja, de keuzelijst is nog niet bepaald goed ingesteld volgens mij.

Wat er in ieder geval zou moeten gebeuren is:
Stel, ik selecteer artikel 100016 (om maar even het voorbeeld uit mijn vorige post aan te houden), dan zou ik bijv. daaronder de opbouw van het product willen zien.

Dus,

Artikel 100016

Grondstof 1: naam, prijs
Grondstof 2: naam, prijs
Grondstof 3: naam, prijs

Waarbij de enige handeling dus het selecteren van het juiste artikel zou moeten zijn (de onderliggende structuur moet "automatisch" worden weergegeven, bijv. in een tekstvak of iets dergelijks).

Ik hoop dat ik hiermee iets duidelijker heb toegelicht waarnaar ik precies op zoek ben.
Overigens is de reden dat de db enkel bestaat uit een keuzelijst met Itemcodes het "voorkomen van verwarring" omdat ik zelf ook al het een en ander heb geprobeerd; blijkbaar heeft het niet echt geholpen om alles zo leeg te laten, sorry :P
 
En daar snap ik het dus niet: je veld [Itemcode] dat je nu gebruikt in de keuzelijst is behoorlijk uniek; behalve 1275 lege records zijn ze echt uniek, dus eenmalig aanwezig. Dus hoe kun je dan 3 grondstoffen hebben per itemcode?
 
Tja, ik denk dat de structuur van de tabel een beetje ongelukkig is; helaas heb ik deze gegevens geïmporteerd vanuit de database van artikelen (het verkoopsysteem van een bedrijf), dus alles (handmatig) aanpassen is niet een voor de hand liggende optie (ik heb de waarden nu nogmaals in de database gezet, maar in wezen zijn ze gekoppeld met het interne systeem hier).

In ieder geval, de structuur is een beetje als volgt:
Stel, er zijn 10 artikelen, 7 daarvan zijn grondstoffen en de overige 3 zijn "eindproducten". Elk artikel heeft inderdaad een unieke code (Itemcode), laten we zeggen 01, 02, 03, ..... 10.
In mijn tabel staat tevens een veld voor itemprod (eindproduct); in dit voorbeeld zouden dat dus artikel 08, 09 en 10 zijn.

Laten we verder stellen dat artikel 08 bestaat uit 3 grondstoffen; 01, 02 en 03.
Hoe dit in de tabel is weergegeven is dus als volgt:

itemprod: 08 - itemreq: 01
itemprod: 08 - itemreq: 02
itemprod: 08 - itemreq: 03

Dus Itemcode 08 is inderdaad uniek; er is maar 1 artikel met dit gegeven en dit artikel is anders dan de andere artikelen. Echter, omdat dit eindproduct bestaat uit meerdere grondstoffen, staat het onder het veld itemprod toch "dubbel" (of drievoudig in dit geval); dit is de enige informatie die beschikbaar is om te kunnen achterhalen waaruit het product bestaat (in dit geval dus de vermelde artikelen 01, 02 en 03).

Is het hiermee iets duidelijker?
 
Je keuzelijst met invoervak moet dus gebaseerd worden op ItemProd, niet op ItemCode. En dan wordt het een stuk simpeler. Je kunt een keuzelijst (een echte) maken die de artikelen laat zien die gekoppeld zijn aan de ItemProd code. Die keuzelijst bouw je op a.d.h.v. de gekozen waarde uit de keuzelijst met invoervak.
 
Ooh okee, ik snap denk ik wat je bedoelt.
Ik ga er morgen weer mee verder, hopelijk lukt het zonder al te veel moeite.

Bedankt voor de aanwijzingen in ieder geval :)
 
Heb het geprobeerd, maar kom er toch nog niet helemaal uit; als ik nu een selectie maak in de eerste keuzelijst (met invoervak), dan wordt de gekoppelde keuzelijst leeg....
Ik heb de VBA code afgeleid uit hoofdstuk 8 van de Access Cursus (het resultaat is hier te vinden: http://www.mijnbestand.nl/Bestand-T3ZJV6DJQNXP.accdb)

Enig idee wat ik precies verkeerd doe? Overigens, is er ergens ook een uitwerking te vinden van het desbetreffende hoofdstuk van de cursus? Ik zie op het forum een thread staan waar het een en ander is geüpload, maar specifieke uitwerkingen per hoofdstuk ben ik nog niet tegengekomen; misschien dat dat me ook weer een stuk in de goede richting kan brengen :)
 
Waar zit ik nu naar te kijken? Het veld ItemProd is nu weg?
 
Klopt, ik heb het hernoemd naar ItemCode bij het opnieuw toevoegen van de tabel gegevens
 
Maar in Structuur heb je nu een veld ItemCode dat dus niet verwijst naar het veld ItemCode in Artikelen. Want anders klopt het niet! Een Product bestaat uit verschillende artikelen toch? Dan kan die codenaam nooit hetzelfde zijn.
 
Dus als ik het goed begrijp kan ik de originele benaming van itemprod beter behouden?
Verder, juist het maken van die benodigde koppeling snap ik nog niet helemaal; itemprod is in feite het product dat wordt gemaakt, en het veld itemreq geeft de benodigde materialen weer. Echter, de waarden die hier staan zijn tevens te vinden onder ItemCode; ItemCode is in wezen het totaal van alle verschillende artikelen onder elkaar gegroepeerd, dus zowel eindproducten (itemprod) als benodigde materialen (itemreq)
 
Volgens mij mis je nog een (nogal belangrijke) tabel. Je hebt een tabel Artikelen met daarin de unieke artikelen, met dus ook een unieke ItemCode. Dat veld zou dan ook sleutelveld moeten zijn, en niet het veld ID, dat kan weg. Verder heb je een tabel Producten, die jij [Structuur] hebt genoemd, wat uiteraard mag. In deze tabel hoort elk product één keer voor te komen, met een ItemProd als sleutelveld. In deze tabel staan alle producteigenschappen. Om per product aan te geven welke artikelen je nodig hebt, is dus een derde tabel nodig, waarin je ItemCode en ItemProd opneemt. De combinatie van de twee velden is uniek, ervan uitgaande dat elk artikel maar één keer in een product wordt gebruikt.
 
Het probleem met de tabel Producten (momenteel dus Structuur) is dat ItemProd geen unieke waarden levert; ItemProd 100016 bijvoorbeeld, staat er 4x in (1x met "lege gegevens", de andere 3x duidt het aan welke materialen benodigd zijn). Hierdoor lijkt het me niet geschikt om dit veld als sleutel te gebruiken toch?

Met de huidige tabelgegevens (dus Artikelen en Structuur), is het dan mogelijk om in de keuzelijst met invoervak een artikel te selecteren (bijv. weer 100016), vervolgens deze waarde als criterium/filter te gebruiken voor de gekoppelde keuzelijst en de relevante gegevens te tonen?
Dus zoals het nu is; in de tabel Structuur staat 100016 in 4 records, waarvan in 3 het veld itemreq ook is gevuld met een unieke waarde (101016, 112840 en 110094), elk een aanduiding voor een benodigde grondstof. Wat ik dus probeer te bereiken is in feite in de gekoppelde keuzelijst een lijstje af te beelden met de records die voldoen aan de waarde die is gekozen in de keuzelijst met invoervak
 
Ik herhaal mezelf niet graag, maar nu moet het toch :)
Verder heb je een tabel Producten, die jij [Structuur] hebt genoemd, wat uiteraard mag. In deze tabel hoort elk product één keer voor te komen, met een ItemProd als sleutelveld.
Je zou de tabel Structuur ook als de koppeltabel kunnen gebruiken, maar dan heb je dus een nieuwe tabel Product nodig met een uniek ItemProd als sleutel. Hoe dan ook: je mist een tabel.
 
Sorry dat je jezelf moest herhalen, heb redelijk moeite met dit zoals je merkt :p

In ieder geval, ik ga er weer mee bezig en nogmaals bedankt :)
 
Na het een en ander te hebben geprutst, heb ik toch iets voor elkaar weten te krijgen :p
Heb het wel anders gedaan dan jij had omschreven; zie hier het resultaat: http://www.mijnbestand.nl/Bestand-BKPNVOSPNMQA.accdb

Is er nog een wezenlijk verschil als ik het op deze manier doe, of op de manier zoals jij oorspronkelijk had vermeld in de posts hierboven?
 
Jouw methode is op zich prima, al ben ik zelf geen liefhebber van filteringen maken die gebaseerd zijn op hard gecodeerde formulier- en objectnamen. Die worden namelijk nooit goed vertaald: als je (bijvoorbeeld) het formulier een andere naam geeft, dan doet de query het niet meer. Ik probeer dus altijd alle code op het formulier te houden, en zou de keuzelijst dus geen rijbron geven, maar die genereren via de keuzelijst. Daar heb je toch al code staan, dus dan kun je daar net zo goed wat regeltjes bijzetten.
Maar nogmaals: dit werkt ook!
 
Aah okee, ik zie inderdaad het nadeel van deze methode. Op dit moment heb ik echter toch wat meer moeite met de andere manier, dus hou het voorlopig maar even zo.
Aan de andere kant, ik loop nu wel weer direct tegen een "nieuw" probleem aan: naast de keuzelijst wil ik een andere keuzelijst plaatsen met daarin gegevens over de benodigde materialen (omschrijving + kostprijs).

Nu heb ik deze (voor zover ik weet) op dezelfde manier opgebouwd en afhankelijk gemaakt van de resultaten van de eerste keuzelijst (cmbstructuur). Echter, wanneer ik aan het begin een artikel selecteer (uit cmbartikel), krijg ik niet de bijbehorende gegevens van de materialen te zien.

Enig idee waar de fout precies ligt?
http://www.mijnbestand.nl/Bestand-7BZ4KWNQRYLP.accdb

De bedoeling is namelijk om eenzelfde criterium op te bouwen; laat alleen die beschrijving + kostprijs zien waarvan de ItemCode gelijk is aan de waarden uit cmbstructuur.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan