invoerveld2 met keuzemogelijkheid afhankelijk van invoerveld1 maken

Status
Niet open voor verdere reacties.

bmichel

Gebruiker
Lid geworden
15 feb 2011
Berichten
14
hallo,

ik wil een invoerformulier maken waarop ik een invoerveld met keuzemogelijkheid heb (dienst). Afhankelijk van welke dienst hierop ingevuld wordt (een 5 tal mogelijkheden) moet het 2e invoerveld een andere lijst van namen (weer een 5 tal) voorstellen.

Ik dacht verschillende tabelletjes te maken met daarin steeds een 5tal namen. Dus voor elke dienst een eigen tabel. Afhankelijk van de dienst wordt dus een andere tabel als rijbron gekozen.
Alleen: hoe moet ik dit aangeven ?? :rolleyes:

alvast bedankt
michel
 
Als het alleen om een lijst met namen gaat, kun je net zo makkelijk volstaan met één tabel, met een extra kolom. In deze kolom zet je een verwijzing naar de ParentId. In deze draad heb ik deze week een voorbeeldje gemaakt van exact hetzelfde probleem...
 
Als het alleen om een lijst met namen gaat, kun je net zo makkelijk volstaan met één tabel, met een extra kolom. In deze kolom zet je een verwijzing naar de ParentId. In deze draad heb ik deze week een voorbeeldje gemaakt van exact hetzelfde probleem...


hummm... ik heb geprobeerd om dit vb te volgen maar ik vrees dat het een beetje boven mijn niveau gaat.
Kijk eens wat ik er van gemaakt heb als je wil :eek:

Bekijk bijlage Registratie balie.rar
 
Geen probleem....
Eén van de probleempjes was dat het veld ParentID bij jou een standaardwaarde heeft (0 namelijk). In mijn voorbeeld is dat leeg (null dus) zodat ik daar op kan controleren. Als er een getal in het veld ParentID staat (0 dus) kun je niet op Null filteren. In dat geval maak je het criterium =0. Verder wordt de tweede lijst bij jou niet gevuld vanuit de eerste, en dat heb ik er ook vast ingezet. Simpele variant, dus zonder aantallen.
 

Bijlagen

  • Registratie balie.zip
    20,9 KB · Weergaven: 39
Geen probleem....
Eén van de probleempjes was dat het veld ParentID bij jou een standaardwaarde heeft (0 namelijk). In mijn voorbeeld is dat leeg (null dus) zodat ik daar op kan controleren. Als er een getal in het veld ParentID staat (0 dus) kun je niet op Null filteren. In dat geval maak je het criterium =0. Verder wordt de tweede lijst bij jou niet gevuld vanuit de eerste, en dat heb ik er ook vast ingezet. Simpele variant, dus zonder aantallen.

Perfect ! Alleen is er het probleem nog dat het laatste veld NAAM nog niet ingevuld kan worden. Dit is ook weer afhankelijk van wat er in het 2e veld DIENSTVERLENING ingevuld is. Ik heb in de tabel KEUZES deze ook al ingegeven met een parentID die terugslaat op de keuzes die er in het 2e veld mogelijk zijn. Ik had begrepen dat dat toch de bedoeling was? Ik dacht ook dat de query die ingegeven was voor de hele tabel geldt? Dus ook voor de het 3e veld NAAM of mis ik hier weer iets?

alvast bedankt voor de moeite, ik zie dat je op dit forum al heel wat mensen uit de nood geholpen hebt. :thumb:
 
Ik hoopte eigenlijk dat je dat zelf zou kunnen a.d.h. van de eerste keuzelijst ;) Maar niet dus...
Om je toch zelf aan de gang te zetten, nu alleen de code die je nodig hebt.

Code:
Private Sub cboDienstverlening_AfterUpdate()
    strsql = "SELECT CatID, Keuze FROM Keuzes WHERE ParentID=" & Me.cboDienstverlening
    Me.cboNaam.RowSource = strsql
    Me.cboNaam.Requery
End Sub
Let er op dat ik de keuzelijst een andere naam heb gegeven.... En ook moet je de kolominstellingen van cboNaam nog aanpassen, anders zie je alleen getallen. Hoe, staat in de keuzelijst cboDienstverlening.
 
Ik hoopte eigenlijk dat je dat zelf zou kunnen a.d.h. van de eerste keuzelijst ;) Maar niet dus...
Om je toch zelf aan de gang te zetten, nu alleen de code die je nodig hebt.

Code:
Private Sub cboDienstverlening_AfterUpdate()
    strsql = "SELECT CatID, Keuze FROM Keuzes WHERE ParentID=" & Me.cboDienstverlening
    Me.cboNaam.RowSource = strsql
    Me.cboNaam.Requery
End Sub
Let er op dat ik de keuzelijst een andere naam heb gegeven.... En ook moet je de kolominstellingen van cboNaam nog aanpassen, anders zie je alleen getallen. Hoe, staat in de keuzelijst cboDienstverlening.

aahh, ik kom al aardig in de buurt maar nog 1 probleem: in de onderliggende tabel worden de gegevens nu ook weggeschreven als nummers. Kunnen die daar ook als woorden/namen zichtbaar gemaakt worden? Of moeten ze er echt ingeschreven worden (dus niet enkel zichtbaar gemaakt worden door een query) omdat ik nadien natuurlijk wel opzoekingsquery's wil gaan doen op deze tabel.

Alvast bedankt voor je geduld want ik ben niet de snelste leerling in deze materie.:D

Bekijk bijlage Registratie balie2.rar
 
Laatst bewerkt:
Dat de getallen worden weggeschreven is perfect! Niks meer aan doen dus! In de keuzelijsten zie je namelijk de namen, en zo heb je dus een perfect werkend formulier.
In een Tabel sla je altijd de referentiewaarden op. Dus in jouw geval de ID's uit de tabel Keuze. Er is geen enkele noodzaak om heel vaak in de tabellen te zijn/werken. Als je een tabel bekijkt, doe je dat op het formulier namelijk. Daar doe je ook de aanpassingen. Als je in een tabel keuzelijsten gaat maken, heb je geen idee meer wat je feitenlijk op slaat; ga je daarna queries maken, en je wilt filteren op een bepaald veld, dan heb je ook geen flauw idee waarop je moet filteren. Je ziet tekst staan, maar je moet als criterium een getal ingeven bijvoorbeeld...
Als je straks queries gaat maken, of rapporten, dan koppel je de tabel keuze weer aan je datatabel, en voeg je alsnog het veld [Keuze] toe, zodat je in je rapport/query de gekozen teksten ziet.

Kortom: wees blij met wat je nu hebt, het is perfect!
 
Dat de getallen worden weggeschreven is perfect! Niks meer aan doen dus! In de keuzelijsten zie je namelijk de namen, en zo heb je dus een perfect werkend formulier.
In een Tabel sla je altijd de referentiewaarden op. Dus in jouw geval de ID's uit de tabel Keuze. Er is geen enkele noodzaak om heel vaak in de tabellen te zijn/werken. Als je een tabel bekijkt, doe je dat op het formulier namelijk. Daar doe je ook de aanpassingen. Als je in een tabel keuzelijsten gaat maken, heb je geen idee meer wat je feitenlijk op slaat; ga je daarna queries maken, en je wilt filteren op een bepaald veld, dan heb je ook geen flauw idee waarop je moet filteren. Je ziet tekst staan, maar je moet als criterium een getal ingeven bijvoorbeeld...
Als je straks queries gaat maken, of rapporten, dan koppel je de tabel keuze weer aan je datatabel, en voeg je alsnog het veld [Keuze] toe, zodat je in je rapport/query de gekozen teksten ziet.

Kortom: wees blij met wat je nu hebt, het is perfect!

Goed, ik probeer het op deze manier dan. De enige reden van mijn vraag was dat ik een beetje vrees dat mijn query's anders weer een stuk moeilijker worden, en je had misschien al gemerkt dat ik geen access-wonder ben.
Kan je mij misschien al een beetje op weg helpen met een query om vb. alle oproepen van maandagvoormiddag weer te geven? (zit ook al een beetje in de knoei met de notatie "NOW")


Al heel erg bedankt.:eek:
 
Je queries worden lastiger als je met keuzelijsten in een tabel gaat werken.... trust me!
Als je in de tabel kijkt, zie je dat je eigenlijk twee keer dezelfde informatie op slaat: de datum is namelijk ook uit de kolom Tijd te halen. Dus je hoeft de datum niet apart in te voeren/op te slaan. Hoe wil je de gegevens overigens zien? Als je op dagdelen wilt kunnen filteren, dan moet je de gegevens eerst groeperen op dagdelen. En dat doe je bijvoorbeeld met een query.
 
kan je eens een vb geven van zo'n query waarmee ik dus de gegevens in 14 delen splits, voor elke voormiddag en elke namiddag van elke dag?
Hoe begin jij daar trouwens aan? Onmiddellijk in het SQL venster of eerst de query maken in ontwerpweergave en nadien proberen bij te sturen met SQL? (zo probeer ik het meestal maar spijtig genoeg lukt dat enkel met eenvoudige query's)

michel
 
Ik begin (net als iedereen denk ik) altijd wel in het Ontwerpscherm, met het selecteren van velden uit tabellen. Waarom zou je zelf alles in gaan kloppen, als Access het veel sneller neerzet? Bovendien kun je met de knop <Opbouwen> redelijk intuïtief (als je gewend bent aan de wat vreemde manier van werken) ingewikkelde constructies bouwen. Pas als de sql moet worden aangepast, ga ik naar het SQL scherm.
Ik gebruik ook vaak queries die op bovengenoemde manier zijn gemaakt om dan vervolgens de SQL te kopieëren, en in VBA verder te bewerken. Ook weer met de gedachte: Access doet het sneller als ik...
In jouw geval heb je wat extra's nodig om de tijdblokken te maken. Dat doe je dus met een IIF functie. Kijk straks maar in het voorbeeld...
 
En hier is een voorbeeldje.... Omdat je voorbeeldgegevens niet heel erg representatief zijn (bijna allemaal van dezelfde dag) is er niet zoveel onderscheid in de gegevens. Als je op werkdagen vm/nm wilt kunnen scheiden, dan heb je eigenlijk een aparte tabel nodig, waarin je de dagdelen nummert. Ma-o=1; Ma-m=2, Di-o=3, Di-m=4 etc. Dan kun je overzichten maken op elk apart dagdeel. Normaal gesproken doe je het op basis van datum en, zoals ik in het voorbeeld heb gedaan, met een formule die de tijdsblokken een eigen term geeft.
Ook is het fomulier aangepast, om alle records te kunnen laten zien. Vanwege de afhankelijke keuzelijsten moet je namelijk wel wat extra's doen om die te vullen bij het bladeren. En die code is, hoewel niet overdreven lastig, best moeilijk voor een beginner ;)
 

Bijlagen

  • Registratie balie.rar
    24,2 KB · Weergaven: 53
inderdaad, best moeilijk voor mij. Ik probeer ze nog te doorgronden.
De registratie balie query geeft wel een foutmelding dat de functie uur niet gedefinieerd is.
 
Daar heb ik verder niet naar gekeken, want die gebruik ik verder niet. Maar het klopt dat hij het niet doet, want hij is fout. De formule die je hebt gemaakt moet dit zijn: Expr1: Format([uur];"dddd")
 
ik heb nog een paar kleine dingetjes veranderd in de query en nu is hij helemaal klaar.

hartelijk bedankt :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan