Afhankelijke keuzelijst

Status
Niet open voor verdere reacties.

8Leonie8

Gebruiker
Lid geworden
7 jul 2008
Berichten
61
Hallo allemaal,

Ik probeer in een formulier twee keuzelijsten te maken. In de eerste kan een merk gekozen worden, vervolgens kan in de tweede keuzelijst het type gekozen worden. De gegevens hiervoor komen uit één tabel waarin de merken met hun types staan.

1) Nu wil ik graag de keuzes in de eerste lijst beperken zodat elk merk er maar één keer in staat.
2) De keuzes in de tweede lijst wil ik beperken zodat alleen de types van het in de eerste keuzelijst geselecteerde merk zichtbaar zijn.

Hoop dat de bijlage mn vraag duidelijk maakt. Ik heb al meerdere voorbeeldbestanden voorbij zien komen op dit forum, maar toch is het me in mijn bestand nog niet gelukt...wie kan mij helpen?

B.v.d!

Gr leonie
 

Bijlagen

  • test.zip
    48,5 KB · Weergaven: 67
Ik kom er nog steeds niet uit, zijn er nog iets meer gerichtere aanwijzingen?

gr leonie
 
Ik kom er nog steeds niet uit, zijn er nog iets meer gerichtere aanwijzingen?

Gerichtere aanwijzingen dan in de linken die ik hierboven heb geplaatst, kan ik je helaas niet geven. Misschien is er iemand anders op dit forum die het wel kan.
 
De versie van Paul maakt gebruik van een macro; persoonlijk ben ik daar niet zo'n voorstander van, omdat ik de handelingen liever in het formulier opsla. Zoals in bijgaand voorbeeld. Overigens is het resultaat hetzelfde: je gebruikt de eerste combolijst om de waarden in de tweede lijst te filteren. Met de macro van Paul, of de VB-actie Requery in mijn voorbeeld ververs je vervolgens de gegevens van de tweede lijst, als je in de eerste lijst iets kiest.

Het eerste deel van je vraag los je op door een query te maken met het statement SELECT DISTINCT, in plaats van alleen Select. Hiermee filter je op unieke waarden in je lijst.
Nog een tip: de naam Type is een beetje ongelukkig gekozen voor het object Combobox, omdat Type een gereserveerd woord is. Ik heb de comboboxen daarom hernoemd naar cboMerk en cboType, zodat je er gemakkelijker naar kunt verwijzen in je code.

Michel
 

Bijlagen

  • test2.rar
    33,9 KB · Weergaven: 83
Bedankt voor jullie reactie!

Ik kon zelf het beste uit de voeten met de oplossing van Paul. Ik heb alle gegevens in de originele database overgenomen, maar stuit nu nog op één probleem:

Wanneer ik de eerste keer een keuze maak (merk), dan staan zoals gewenst bij type alleen de types van dat merk. Kies ik daarna echter een ander merk, dan blijven de types van het eerder gekozen merk staan. Weet iemand hoe dit kan?

Gr leonie
 
Hallo

Nou dat zou toch gewoon moeten werken….
• Kijk even of je de macro hebt staan “bij verlaten”
• Je kan hem ook zetten bij “na bijwerken”
• Kijk of bij de macro de naam van het veld klopt (type)
 
Zou ik je aanraden om toch nog eens naar mijn bestandje te kijken, want daar is dat probleem niet aanwezig ;)

De reden van het verschijnsel is, dat keuzelijsten niet automatisch worden bijgewerkt. Dus als je een waarde in lijst 1 veranderd, zal lijst 2 daar niks mee doen. Je moet dus een actie ophangen aan de eerste keuzelijst, namelijk: maak lijst 2 leeg als je lijst 1 kiest. Dat doet onderstaande code dus, die je aan de gebeurtenis <Bij kiezen> hangt.

Code:
Private Sub cboMerk_Enter()

    Me.cboType = ""

End Sub

Bij wijzigen van de keuzelijst wil je de nieuwe waarden zien in de tweede lijst.
De macro van Paul doet precies hetzelfde als onderstaande code:

Code:
Private Sub cboMerk_Change()

Me.cboType.Requery

End Sub

Onderstaande code heb je eigenlijk niet nodig, maar ik gebruik dit soort opdrachten vaak wel, om het formulier helemaal leeg te maken bij opstarten:

Code:
Private Sub Form_Current()

Me.cboMerk = ""
Me.cboType = ""

End Sub

Deze code komt op de formuliereigenschap <Bij laden>.

De reden dat ik altijd dit soort constructies gebruik is drieledig: ten eerste ondersteunt Microsoft het gebruik van macro's niet meer; er worden dus geen updates meer gemaakt in de nieuwe versies. Macro's zitten er eigenlijk alleen nog maar in voor aan oude versies verknochte gebruikers. Microsoft zelf raadt aan om via Visual Basic te werken, wat dus wel bij elke versie wordt uitgebreid en verbeterd.
De tweede reden is, dat je, als je overal macro's voor maakt, een hele hoop macro's krijgt, wat het overzicht op de db er niet beter op maakt. Code die je in een formulier maakt, blijft alleen voor dat formulier. Je werkt dus veel netter.
De derde reden: je kunt op een formulier allerlei procedures hangen, die door verschillende objecten, zoals knoppen en keuzelijsten, kunnen worden gebruikt. Je kunt bijvoorbeeld de een knop aanroepen vanuit een keuzelijst, en andersom.

Kortom: met deze info zou je het probleem moeten kunnen tackelen!

Michel
 
Code:
De reden dat ik altijd dit soort constructies gebruik is drieledig: 
ten eerste ondersteunt Microsoft het gebruik van macro's niet meer; er worden dus geen updates meer gemaakt in de nieuwe versies. Macro's zitten er eigenlijk alleen nog maar in voor aan oude versies verknochte gebruikers. Microsoft zelf raadt aan om via Visual Basic te werken, wat dus wel bij elke versie wordt uitgebreid en verbeterd.

@ Michel
Lichtelijk oftopic maar hoe kom je aan deze info? Ik lees alles wat los en vast zit maar je hebt een hele goede bron die ik niet ken. Zou je die willen delen? :)
 
ja ik wil die info ook graag!
heb nu 2007 en daar staan gewoon macro's in en zelfs nieuwe en aanpassingen.

ook heb je daar geen losse macro’s meer dus heb niet het idee dat ze er mee willen stoppen.
Hoor het graag!
 
Hallo,

Ik probeerde jullie oplossing voor de "gekoppelde keuzelijsten" en het werkte zeer goed, dwz zolang er in 1 formulier gewerkt wordt.
Indien de keuzelijsten in een subformulier staan werkt het niet meer. Zodra een waarde gekozen wordt voor de eerste keuzelijst (in het subformulier) komt er een pop-up venster met de vraag naar de parameterwaarde voor de tweede keuzelijst.
Het hoofdformulier bevat ook een keuzelijst met invoervak om de juiste record te zoeken, die het subformulier met de 2 keuzelijsten bevat.
Weten jullie hiervoor een oplossing?
Dank bij voorbaat
 

Bijlagen

  • keuzelijstprobleem.zip
    25,4 KB · Weergaven: 45
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan