Afhankelijke keuzelijst

Status
Niet open voor verdere reacties.

h.hijma

Gebruiker
Lid geworden
7 sep 2001
Berichten
831
Hoe kan ik een keuze lijst instellen die afhankelijk is van een andere keuze lijst
Bijvoorbeeld:
Ik kan in de eerste lijst aangeven of het om DVD-spelers, Video-recorders of Cinema-sets gaat. en als ik dan bijvoorbeeld op DVD-spelers klik, dat ik dan in de 2e keuzelijst het type speler kan aangeven.
 
Hallo

dit is niet precies wat je zocht maar mischien heb je hier wel wat aan.

Wim

sorry ikdacht dat het om excel ging
 

Bijlagen

Laatst bewerkt:
bedankt voor de moeite, maar ik bedoelde toch eigenlijk iets anders.
Ik wil bijv. in het eerste keuzevak aangeven dat het om besturingssystemen gaat, en wanneer ik de optie "Besturingssystemen" heb geselecteerd, dat ik dan in het 2e keuzevak kan aangeven om welk besturingsysteem het gaat.
 
Om mijn voorbeeld op jou bijlage te richten:

Als de Vendetta Sedan geen mogelijkheid heeft voor het aansluiten van een airconditioning, dan wil ik dat de optie "airconditioning" ook niet kan worden geselecteerd in vak 2 wanneer ik in vak 1 de Vendetta Sedan heb geselecteerd.
 
Misschien het 2e veld vullen uit een query die het eerste veld als filter/criterium gebruikt ?
 
en hoe doe ik dat?
Ik heb namelijk niet veel verstand van access :o
 
Wat je moet doen is spelen met de Row Source van de comboboxjes.

Rowsource van cboProducten: "SELECT produktnaam FROM producten"
Rowsource van cboTypen: "SELECT type FROM typen WHERE produktnaam = me.cboProdukten"

Nu moet je er alleen voor zorgen dat de tweede combobox gerequeryd (goed nederlands he :o ) wordt op het moment van het veranderen van de waarde van de eerste combobox. Dit doe je door in het OnChange event van de eerste combobox de volgende code te zetten: "me.cboTypen.requery"


Suc6,
 
Oke bedankt, maar ik ben nu nog al met de tabellen bezig, hoe moet ik dat doen? (zie bijlage)
 

Bijlagen

Een mogelijkheid

Zie bijgaand voorbeeld. Ik gebruik 2 tabellen waarin de 2e tabel een veld moet hebben wat verwijst naar de eerste ( volgnr categorie). In het formulier waarin je de info verwerkt maak je een tekstvak die het volgnr van de categorie opzoekt ( mbv DLookup). Dit veld vormt het criteria van de querie wat onder het 2e keuzelijstje hangt. Nu nog wat Requeries (na bijwerken). Waarschijnlijk is er nog wel een snellere oplossing maar deze had ik snel voorhanden. Succes.

(het lukt alleen niet om de demo.mdb als bijlage bij dit bericht te krijgen en ik heb geen winzip oid)
 
Laatst bewerkt:
Misschien lukt eea nu wel

Even zip opgehaald. Ik hoop dat ik het goed gezipped heb.

Kort gezegd komt het er op neer dat je in het formulier je hoofdcategorie kiest. Het DLookup veld zoekt het bijbehorende nr van deze categorie. Dit nr wordt gebruikt als criteria in de querie van de 2e keuzelijst. Om eea mooi te maken kun de eigenschap zichtbaar van het DLookup veld op nee zetten.
 

Bijlagen

Laatst bewerkt:
Ik heb nog een alernatiefje voor de DLookup manier gemaakt. Hierbij maak ik gebruik van het zichtbaar en onzichtbaar maken van kolommen in een combobox (zie kolombreedtes).

Dit scheelt weer een extra veld op het formulier en mischien bij grotere DB's ook in performance.


Grtz,
 

Bijlagen

ik ben er bijna, maar ik kan Opzoeknrcategorie nergens vinden, ja alleen in de programmacode.
Waar haal je deze waarde vandaan?
 
Aanvullende informatie

In de querie (Qdetail) die onder de 2e lijst met invoervak hangt staat in het veld categorie bij criteria: [Forms]![Fm totaalinfo]![Opzoeknrcategorie]. Dit verwijst naar het formulier "Fm totaalinfo" en het veld "Opzoeknrcategorie". Dit laatste is de naam van het veld waarin de DLookup staat. Waarschijnlijk heet jouw veld Tekst gevolgd door een nr. De label van dit veld heet "Hulpje nr categorie" misschien dat je daardoor in de war bent. Zet hem op.
 
Ik kom er nog steeds niet helemaal uit, misschien dat jullie het de Knowledgebase even kunnen bekijken.
Hij is nog lang niet af, en het formulier is ook nog een grote puinhoop, maar dat komt later allemaal wel, als dit nu eerst maar werkt
 
Laatst bewerkt:
Dan hier de oplossing

Wil je dat het gaat werken in je database zul je aan aantal dingen moeten doen. Ten eerste hebben de velden [categorie omschrijving] en [soort omschrijving] geen besturingselementbron. Dat betekent dat ingevoerde gegevens alleen in je formulier staan en niet vast worden gelegd in je tabel. Als dit niet je bedoeling is dan moet je twee tekstvelden aanmaken in de onderliggende tabel en vermelden als besturingselementbron in de twee velden.
Het gemeenschappelijke veld tussen de twee velden is [Categorie_id] en juist dat veld heb je niet opgenomen in de querie [qr_keuzelijsten_soorten]. Daarom werkt het niet. Voeg dus dit veld toe aan de querie. Als je dit gedaan hebt dan zet je bij dit veld bij criteria: Forms![fm_knowledgebase]![Keuzelijst_categorie]. Dit laatste krijg je ook voor elkaar als je in het veld criteria met de rechtermuisknop naar “opbouwen” gaat. Selecteer aan de linkerzijde het formulier en vervolgens in het midden het veld [Keuzelijst_categorie]. Vergeet wijzigingen niet op te slaan.
Nu moet je nog bij de gebeurtenis “Na bijwerken” van het veld [Categorie Omschrijving] het volgende verwijderen: Me.categorie_id.Requery. Hier geeft de database een foutmelding op.
Vul een hoofdcategorie in en zie het resultaat in het veld soorten. Suc6

Overigens gebruik je de naam van de hoofdcategorie (bv hardware) als gezamenlijk veld met de tabel soorten. Ik gebruik liever het bijbehorende nummer als koppelveld. Mocht je over een tijdje de hoofdcategorie "hardware" veranderen in "hardware producten" dan werkt de querie niet meer. Vandaar dat ik het unieke nummer als koppelveld ( via het DLookupveld zoals ik eerder beschreven heb) gebruik. Een nummer verander je niet meer. Na keuze hoofdcategorie zoekt het DLookupveld het bijbehorende nr in de tabel op en wordt vervolgens dit nummer als criteria gebruikt in de querie ( dan moet je het ID-veld wel toevoegen aan de querie) van het veld soorten.
 
Laatst bewerkt:
BGedankt, ik krijg nu geen compileer fouten meer, maar ik snap niet precies hoe ik nu zo'n koppelveld moet instellen, maar trouwens: als ik de naam van de hoofdcategorie nou ook verander in de query, dan werkt het toch ook?

En hoe krijg ik het voor elkaar dat ze alle soorten kunnen bekijken? en dus niet slechts van 1 categorie, ik hoef ze dan toch niet allemaal weer apart in de tabel te zetten?
 
Laatst bewerkt:
ik krijg nu trouwens ook een foutmelding als ik een aanmelder aanklik. (bijlage)

attachment.php


en de gegevens van de categorie en de soorten worden niet per record opgeslagen, dus als ik de categorie in record 2 verander, dan wordt die van 1 ook automatisch veranderd enz enz
 

Bijlagen

  • join-sleutel.gif
    join-sleutel.gif
    4,6 KB · Weergaven: 169
Laatst bewerkt:
Alles op zijn tijd

Je stelt nu wel heel veel vragen. Ik zal proberen er een paar te beantwoorden. Het instellen van het koppelveld heb ik eerder beschreven, duidelijker kan ik het niet. De naam veranderen in de querie kan natuurlijk ook maar dat betekent dat betreffende kolom ook een ander waarde laat zien en ik weet niet waar de querie allemaal gebruikt wordt. Om dit te voorkomen heb ik het criteriaveld toegevoegd. Je foutmeldingen worden veroorzaakt door de door jou gelegde relaties. Je moet deze 1 op veel maken waarbij de veelkant de velden in de knowledgeDb zijn. Nu krijg je een foutmelding bij aanmelder omdat de relatie verkeerd staat (zie joineigenschappen) en de tabel aanmelder nog leeg is. M.b.t. het veranderen van categorie en soorten. Dit komt doordat je een onafhankelijk tekstvak gebruikt. Maak 2 nieuwe velden aan in de tabel en geef de velden een besturingselementbron. De waarden worden dan per record wegggeschreven.
 
Laatst bewerkt:
Aanvulling tig

Ziet er goed uit. Nog even je laatste vraag dat je in een veld alle soorten wilt laten zien gebaseerd op dezelfde tabel. Maak een kopie van de gebruikte querie soorten en geef deze een andere naam. Vervolgens verwijder je het criterium ( de verwijzing naar het veld in het formulier). Als je nu in een keuzelijst met invoervak de betreffende querie er onder hangt zul je alle soorten zichtbaar krijgen. Voor de rest, veel testen tijdens de Paasdagen. Prettig weekend.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan