Vervolgkeuzelijst leeg weergeven bij openen formulier

Status
Niet open voor verdere reacties.

Lovdingh

Gebruiker
Lid geworden
23 mrt 2012
Berichten
8
Momenteel ben ik bezig met het maken van een database om storingen in bepaalde processen te registreren. Onderdeel van het formulier is een keuzelijst waarin wordt aangegeven in welke processtap (bv 'voordrogen') de storing zich voordoet. Hier haalt, via een query, een vervolgkeuzelijst uit welke processtap is geselecteerd en deze weergeeft de procesonderdelen (bv 'PO500E' en 'WW2515E') die in deze processtap voorkomen.
Nu wil ik, om invulfouten te voorkomen, dat de vervolgkeuzelijst blanco is als het formulier geopend wordt en dat de procesonderdelen pas zichtbaar zijn als een keuze is gemaakt uit de processtap.
Ik heb een poging gedaan om een standaardwaarde voor de vervolgkeuzelijst in te stellen om hem zo altijd blanco op te leveren, dit werkt echter niet. Als ik een formulier opsla en een nieuwe open dan staan in de vervolgkeuzelijst nog de processtappen die in het formulier dat daarvoor ingevuld werd van toepassing waren.

Ik ben erg benieuwd hoe ik dit kan oplossen, bij voorbaat dank voor jullie antwoorden!

Groet,
Lucas
 
Wat je vertelt klinkt mij allemaal een beetje vreemd in de oren; doorgaans zal een keuzelijst namelijk altijd leeg zijn bij het openen van een formulier. Dat je dat niet hebt, doet mij dus stevig fronzen... Anderszijds: als je een keuzelijst koppelt aan een veld, en je maakt in je formulier een selectie (dus je slaat iets op in de tabel) dan wil je niet dat bij het openen van het formulier de keuzelijst weer leeg is, want dat betekent dat de eerder geselecteerde waarde uit de tabel wordt gewist. En dat is natuurlijk ook niet de bedoeling; dat wil je immers bij je tekstvelden toch ook niet?
Hoe heb je de keuzelijst gemaakt, wat is de Rijbron, en waar is hij aan gekoppeld? En heb je gebeurtenissen die worden uitgevoerd bij het openen van het formulier?
 
Ik wil dat de 2e keuzelijst, dus die waarin de processtap staat, elke keer dat er een nieuwe invoer wordt gedaan leeg is zodat de mensen die hem invullen geen optie uit de 2e keuzelijst kunnen kiezen voordat ze in de eerste keuzelijst het processtap hebben aangeklikt.

De rijbron van mijn eerste keuzelijst is een lijstje met getypte processtappen. De rijbron van de 2e keuzelijst is:
Code:
SELECT Q_Processtap.Apparaat, Q_Processtap.Processtap FROM Q_Processtap;
,
Q_Processtap is een query die bestaat uit de volgende code:
Code:
SELECT Storingsopties.Processtap, Storingsopties.Apparaat, Storingsopties.Start
FROM Storingsopties
WHERE (((Storingsopties.Processtap)=[Forms]![Storingsformulier]![Opties]));
Zodra het formulier geopend wordt, wordt macro M_Storingsformulier uitgevoerd. Deze zorgt ervoor dat het formulier
Ik heb de database bijgevoegd (als 2003-formaat zodat hij <100 kb werd, ik werk op Access 2007). Hopelijk kan jij hier in zien wat ik bedoel.

Bekijk bijlage Storingsformulier.zip

Groet,

Lucas
 
Maak een Na_bijwerken gebeurtenis op de eerste keuzelijst die de tweede keuzelijst leegmaakt.
Code:
     Me.Tweedekeuzelijst=""
 
Bedankt voor je antwoord, dit levert helaas niet het gewenste resultaat op. Wat gebeurd is namelijk dat er geen enkele optie uit de tweede keuzelijst wordt geselecteerd (op zich goed, ik laat dit er dan ook in staan) als er in de eerste keuzelijst een optie wordt geselecteerd.

Ik denk dat ik de vraag niet goed heb gesteld, ik zal nog een keer proberen duidelijk te maken wat ik bedoel:
Wanneer het formulier geopend wordt moet de eerste keuzelijst een aantal opties weergeven, waaruit de invuller kan kiezen. De tweede keuzelijst moet leeg zijn (dus er mogen geen opties in worden weergeven) totdat er een keuze is gemaakt in de eerste keuzelijst.
Momenteel is het zo dat er geen optie in de tweede keuzelijst geselecteerd staat maar dat het wel mogelijk is om de tweede keuzelijst een optie te selecteren, zonder in de eerste lijst een optie te selecteren. Dit moet niet kunnen, omdat de automatische verwerking van de gegevens dan vastloopt. Waar ik dus naar op zoek ben is een methode/code om te zorgen dat er geen opties in de tweede keuzelijst staan, totdat er in de eerste keuzelijst een optie is gekozen.

groet,
Lucas
 
Je zit eigenlijk met twee zaken: ten eerste: de tweede keuzelijst is afhankelijk van een waarde die je kiest uit de eerste keuzelijst. Dat betekent dus dat de opties in de tweede keuzelijst elke keer als je een nieuwe waarde kiest in de eerste keuzelijst moeten worden aangepast. Daarbij moet de tweede keuzelijstwaarde worden verwijderd, want bij het kiezen van een waarde uit de eerste lijst staat de eerder gekozen waarde in de tweede lijst als het goed is niet meer tussen de te kiezen opties. Dat leegmaken doe je met de code uit mijn vorige post.
Als je in een formulier een nieuw record maakt, moet de eerste keuzelijst dus in ieder geval gevuld zijn, want die keuze moet je altijd kunnen maken. De tweede keuzelijst zou je op dat moment niet moeten kunnen gebruiken; immers: je moet eerst iets in de eerste lijst kiezen. Dat kun je op twee manieren regelen: je kunt de tweede keuzelijst bij het starten uitschakelen, en pas inschakelen als je in de eerste lijst een keuze maakt. Op die manier voorkom je dat iemand iets doet met de tweede keuzelijst. Tweede optie: je geeft de tweede keuzelijst geen rijbron mee. Dat doe je pas als je een keuze maakt uit de eerste keuzelijst. Dan kun je de tweede keuzelijst dus niet gebruiken als je niet eerst in de eerste lijst iets kiest, want in de tweede zit dan helemaal niks.
Het tweede aspect is een stuk lastiger te maken. Wat namelijk als je een record opslaat met twee waarden uit de keuzelijsten? Als je het formulier opnieuw opent en door de records bladert, wil je die waarden wel zien/behouden. Je moet dus controleren wat de status is van het record (nieuw of bewerken) en in het ene geval moeten de keuzelijsten leeg worden gemaakt, en in de tweede moeten de waarden uit de tabel in de lijsten worden opgezocht.

Het uitwerken van dit probleem is ongeveer net zo ingewikkeld als dat ik het hier beschrijf; kom je er niet uit, dan is het dus een stuk makkelijker als je een voorbeeldje plaatst. Dan zie je het in je eigen situatie, en dat is makkelijker te snappen dan dat ik een voorbeeldje post.
 
Beste Michel,

Bedankt voor je hulp. Wat ik uiteindelijk heb gedaan is de tweede keuzelijst als niet zichtbaar in te stellen bij het openen van het formulier en pas zichtbaar laten worden wanneer de eerste keuzelijst is ingevuld. Zodra de record opgeslagen wordt, wordt de tweede keuzelijst in dezelfde handeling weer onzichtbaar gemaakt.
Dit verdient misschien geen schoonheidsprijs maar het is voor mij op dit moment voldoende.

Bedankt voor je hulp!

Lucas
 
Ik zou het dan op zijn minst doen met Enabled=False en Enabled=True; objecten wisselend zichtbaar en onzichtbaar maken is erg onrustig in het scherm, en bovendien win je er niks mee, want de rest van je objecten blijft toch op dezelfde plek staan. Maar dat is aan jou ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan