Relatie tussen gegevens onderling in tabel

Status
Niet open voor verdere reacties.

kuyt1

Gebruiker
Lid geworden
8 mrt 2012
Berichten
24
Hallo allemaal,

Voor een bedrijf ga ik een database opzetten. Zij verrichten onderhoud aan onderdelen.
Op het moment dat er aan een onderdeel onderhoud verricht dient te worden, registreren ze dit in de database.
Om nu het invullen van gegevens zoveel mogelijk te besparen wil ik een koppeling/relatie maken tussen gegevens onderling.

Hier wil ik het volgende mee zeggen:
Ik heb een aparte tabel aangemaakt met daarin de onderdelen en hun bijbehorende partnummer. (onderdelen tabel)
Het registreren van het onderhoud gebeurt dmv het invullen van een formulier (test form), waar het kopje onderdeel gekoppeld is dmv een keuzelijst aan de onderdelen tabel.
Wat ik nu wil is, dat wanneer zij een onderdeel in de keuzelijst kiezen, automatisch in het formulier de bijbehorende partnummer wordt ingevuld, deze koppeling wil ik dus hebben. Dan hoeven zij dit zelf niet meer in te vullen of uit de keuzelijst te halen. Bekijk bijlage test.zip

Iemand die mij hiermee kan helpen
Heb als voorbeeld een test database opgezet.
 
Ik kan op het werk geen 2007/2010 openen, dus daarom de theorie. En die is relatief simpel te maken :)
Om te beginnen: ik snap niet helemaal wat je wilt; als je een keuzelijst maakt (met de wizard), zal Access het Partnr zowiezo toevoegen aan de rijbron als verborgen veld, omdat Partnr naar ik aanneem ook het sleutelveld is uit de onderdelen tabel. Het veld Omschrijving zal je dan zien in de keuzelijst, maar het Partnr zal worden opgeslagen. Wil je het partnummer zien i.p.v. de omschrijving, dan kun je de breedte van de 1e kolom verhogen van 0cm naar bijvoorbeeld 1cm. Nu zie je in de keuzelijst de partnummers, en niet meer de omschrijving. Om die te zien, maak je een tekstveld aan en geef je dat als besturingselementbron de formule: =cboPartnr.Column(1). Nu zul je, als je in de keuzelijst cboPartnr een waarde kiest, de omschrijving zien in het tekstveld. Wil je meer velden zien, dan voeg je die toe aan de rijbron van de keuzelijst, en verhoog je het getal bij Column dienovereenkomstig. Addertje onder het gras: Access telt vanaf Column(0) als eerste kolom. Vandaar in het voorbeeldje de waarde 1 en niet 2!
 
Ik heb een hoofdtabel waarin al het geregistreerde onderhoud in komt.
Er is een aparte losse tabel gemaakt met daarin de gegevens, kolom 0: onderdelen, kolom 1: de bijbehorende partnummers. Ik heb de partnummers dus niet bij de ontwerpweergave als omschrijving ingevuld, maar gewoon allebei in de gegevensbladweergave.

In het formulier heb ik een tekstvak voor het onderdeel en een aparte tekstvak voor partnummers.
Voor het tekstvak onderdeel heb ik in het formulier (ontwerpweergave) gewijzigd naar een keuzelijst en als rijbron de onderdelen uit de tabel alleen gepakt (kolom 0 dus).
Wanneer zij nu uit deze keuzelijst een onderdeel aanklikken, moet er automatisch in het losse tekstvak van partnummers, het bijbehorende partnummer worden ingevuld..

Zo bedoelde ik het..
 
En dat doe je op de manier die ik heb beschreven. Dus het veld Partnummer toevoegen aan de rijbron van je keuzelijst, en het tekstvak als Besturingselementbron de formule =cboOnderdeel.Column(1).
 
Ik doe in iedergeval iets niet goed, want hij geeft nu in het partnummer vakje het volgende aan: #naam?
Misschien kun je een voorbeeld in access zetten?
 
Wat is de Rijbron van je keuzelijst? Kun je de SQL hier posten?
 
Hier je eigen voorbeeldje, opgezet zoals ik eerder al aangaf. Wel heb ik ook de keuzelijst zelf nog een beetje aangepast, zoals je hopelijk kunt zien :)
 

Bijlagen

Het probleem bij mij was dat ik bij de naam van het keuzelijstvak geen ' cbo' ervoor had staan, nadat ik de naam cboOnderdeel ervan gemaakt had pakte hij nu wel het partnummer over.

Echter zit ik nu nog met een andere vraag/probleem.

Door het besturingselement te veranderen bij het vakje partnummer, kan hier niks meer worden ingevuld zelf in het formulier.
Een volgende stap die ik er namelijk in zou willen hebben is, dat wanneer er dus een nieuw onderdeel binnen komt, die vooraf niet bekend is dus niet in de tabel staat, ze deze zelf kunnen invullen met de bijbehorende partnummer (bij onderdeel kan dit, maar niet bij partnummer daarin kan niks worden gewijzigd/veranderd meer).
Het mooiste zou dan ook meteen zijn dat de gegevens die hier worden ingevuld automatisch worden opgeslagen in de lijst met onderdelen-partnummers tabel, zodat deze voor de volgende keer wel weer via de keuzelijst gekozen kan worden.

Het belangrijkste is eigenlijk dat er nog bij het partnummer zelfstandig iets kan worden ingevuld, dus niet vergrendeld is door de code.
Automatisch opslaan zou eventueel nog handmatig in de tabel kunnen worden bijgevoegd.

Het zou natuurlijk ook kunnen wanneer er nieuwe onderdelen binnen komen, deze kunnen dan worden door gecommuniceerd naar de beheerder die het vervolgens invult, maar dan wordt je afhankelijk van elkaar en stagneert het werk op de werkvloer.

Iemand ideeen/oplossingen?
 
Eigenlijk zou je hiervoor een nieuwe vraag moeten aanmaken, want dat is inderdaad een heel ander probleem. Je wilt natuurlijk ook dat helpers naar jouw vraag kijken, en als helper kijk je eerst naar het onderwerp in de lijst; je gaat natuurlijk geen vragen beantwoorden waarvan je op basis van het onderwerp al kunt zien dat je daar niks zinnigs over te zeggen hebt. En jouw onderwerp is niet alleen nu opgelost, het heeft ook niks meer met je nieuwe vraag te maken!
In het kort de weg die je moet bewandelen: een keuzelijst laat de waarden zien die uit je tabel komen (als je tenminste tabel/query als type gebruikt). Dat betekent, dat je er niet zomaar iets aan kunt toevoegen; wat je niet hebt, kun je immers ook niet laten zien. En dat geldt ook voor het Partnummer dat je uit die keuzelijst haalt.
Daarom kent een Keuzelijst de gebeurtenis <Bij niet in lijst>. Deze kun je laten draaien op het moment dat je in de keuzelijst iets intypt dat er niet is, in essentie is dat dus een nieuwe waarde. Met deze gebeurtenis kun je de nieuwe waarde dan toevoegen, en alsnog gebruiken.
 
Nog een vraagje over dit onderwerp trouwens.
Ik heb een rapport van het formulier gemaakt, maar wat mij nu opvalt, is dat vanaf het 2e record in het formulier, hij de P/N niet meer overneemt in het rapport, query of tabel, maar alleen in het formulier en ook daarin zichtbaar is... in de eerste record doet hij het wel, maar verder niet meer.. het onderdeel zelf blijft die wel meenemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan