Keuzelijsten

Status
Niet open voor verdere reacties.

Skybird

Gebruiker
Lid geworden
8 jan 2001
Berichten
27
beste accesskenners,

zit al het hele weekend te prutsen en ik geraak er niet uit.
Ik heb 5 tabellen die onderling in relatie staan met elkaar (zie bijlage) en het uiteindelijke doel van deze db is dat er een faktuur uit de printer rolt.
Wat ik al heb als formulier om de fakturen in te vullen kan je eveneens zien op de bijlage.
maar zoals je ziet is het nogal tijdrovend om de hele keuzelijst ProduktID te doorlopen.
Wat ik graag zou willen (en niet voor mekaar krijg) is dat er een eerste keuzemogelijkheid is op CategorieNaam en dan pas een tweede op ProduktNaam die enkel de geselecteerde categorie produkten laat zien ; voor elk geselecteerd produkt moet PrijsPerEenheid automatisch ingevuld worden.

Hopelijk is het een beetje duidelijk
alle ideeen zijn welkom

Alvast bedankt
 

Bijlagen

  • bijlage.jpg
    bijlage.jpg
    70,4 KB · Weergaven: 70
Je moet dan de rowsource van de tweede keuzelijst automatisch laten aanpassen. De eerste keuzelijst vul je met alle verschillende categorieen;

SELECT DISTINCT categorieid FROM categorie

Je maakt dan een on change event voor deze keuzelijst waarbij je in VBA de waarde van de keuzelijst aan een variabele toewijst. bijvoorbeeld:

vCategorie = keuzelijstcategorie.value
keuzelijstproduct.rowsource = "SELECT productid FROM product WHERE categorieid = " & vCategorie & " "

Ik heb niet gekeken of alle veldnamen precies kloppen zo, maar het is een opzet.
 
Dit is wat ik al had, maar dan kan ik vanuit de keuzelijst Produkten niet verder om de eenheidsprijs automatisch te laten invullen.

in de keuzelijst voor de Categorien (cboCategorie) heb ik

SELECT Categorie.CategorieID,Categorie.CategorieNaam FROM Categorie;

en bij de gebeurtenisprocedure AfterUpdate

Private Sub cboCategorie_AfterUpdate()
Dim sProduktSource As String

sProduktSource = "SELECT [Produkt].[ProduktID], [Produkt].[CategorieID], [Produkt].[ProduktNaam] " & _
"FROM Produkt " & _
"WHERE [CategorieID] = " & Me.cboCategorie.Value
Me.cboProdukt.RowSource = sProduktSource
Me.cboProdukt.Requery
End Sub

en in de keuzelijst voor de produkten (cboProdukt) hab ik

SELECT Produkt.ProduktID, Produkt.CategorieID, Produkt.ProduktNaam FROM Produkt;
 
Als je de rowsource van de produkten combobox vult vanuit de VBA code heeft het niet veel zin om ook nog een rowsource aan te geven in die combobox zelf.

Probeer eens het onChange event te gebruiken. Deze vuurt eerder af (namelijk bij het wijzigen van de waarde van de combobox) waardoor je mischien wel de gewenste resultaten krijgt.


Grtz,
 
ook de zoveelste poging is weer mislukt.
Beheer25: Je hebt gelijk wat betreft de rowsource.

Maar wat ik nu hebt werkt ook voor gene meter.
in de change event van cboCategorie:

Private Sub cboCategorie_Change()
Dim sProduktSource As String

sProduktSource = "SELECT [Produkt].[ProduktID], [Produkt].[CategorieID], [Produkt].[ProduktNaam] " & _
"FROM Produkt " & _
"WHERE [CategorieID] = " & Me.cboCategorie.Value
Me.cboProdukt.RowSource = sProduktSource
Me.cboProdukt.Requery
End Sub

maar dit geeft als resultaat in het eerste keuzelijstje een keuze van de categorien en in het tweede keuzelijstje de produktnamen maar ik kan niets kiezen enkel het eerste in de lijst verschijnt en ik kan ook geen verdere keuze maken, geen nieuwe records toevoegen maw alles blijft beperkt tot 1categorie kiezen en het eerste in de lijst van de bijhorende produkten.

in wie zijn hoed zit de truck? die van mij is bijna leeg
 
Ik heb even een voorbeeldje gemaakt hoe een dergelijke constructie werkt in access 97.
 

Bijlagen

Bedankt Bartuls, het lijkt sterk op wat ik al had behalve dat jij de onclick gebruikt.
En toch werkt het nog steeds niet. In bijlage een zipbestandje van een deeltje db het gaat om het formulier test2

Wie wil mag zijn hoofd erover breken.
Ik vandaag niet meer (ik ga graancirkel kijken hier bij ons in de buurt)


alvast bedankt.
 

Bijlagen

Wat werkt er dan niet in je geplaatste bestand. Lijkt mij OK te werken...


Grtz,
 
Goedemorgen voor wie nog op is en eveneens
goedemorgen voor wie dit later op de dag leest


Wanneer je in de keuzelijst categorieID bv "allerlei" aanklikt, dan kan je weliswaar in de keuzelijst "produktnaam" kiezen uit bijhorende produkten en wanneer je dan daar een keuze maakt bv"servetring" gebeurt er dit:
- in alle velden van de kolom produkten komt "serevetring" te staan (dit is niet de bedoeling want een volgend record moet wel wat anders zijn)
- de PrijsPerEenheid wordt niet ingevuld
- alles wordt bijgevuld in de tabel Produkt (en dat is ook de bedoeling niet)


IK heb echt geen idee waar het fout zit
Nogmaals bedankt voor jullie reakties
en wie weet is er toch iemand die ziet waar mijn redenering fout zit
 
Kern van het probleem is het datamodel.

In je DB zit geen enkele relatie tussen de ID's die wel zijn aangemaakt. Verder gebruik je de omschrijving van de catergorien als koppeling tussen de produkt en categorie tabel. Dat gaat zwaar mis.

Verder is het veld op het formulier Unbound, dit moet worden gekoppeld aan het produktID veld uit de tabel.


Grtz,
 
Bedankt beheer25 voor je reaktie, maar kan je niet wat meer uitleg geven want ik begrijp niet zo goed wat je bedoelt. (ik ben maar een amateurtje :confused: )
Wat is een formulier Unbound?
Misschien is de relatie tussen alle ID niet duidelijk omdat ik in het laatste zipbestandje maar een stukje db meestuurde. Op de 1ste bijlage (jpeg) kan je de relaties tussen alle tabellen zien.


thnx
 
na enkele dagen verlof ben ik er weer ingevlogen, maar het blijft me nog steeds een mysterie hoe ik die twee keuzelijsten en een afhankelijk veld met elkaar moet koppelen.

Alle ideeen zijn nog steeds welkom


grtz
tia
 
Als je het formulier in design view zet zie je daarin "Unbound" staan. Als je de NL versie hebt staat de vertaling ervan daar.

Dit betekent dat als je iets in dat veld intikt op kiest dat dat niet wordt opgeslagen in de tabel waarop het formulier is gebaseerd.

Verder moet je even kijken naar het datamodel en ervoor zorgen dat je de ID's gebruikt om verwijzingen tussen tabellen te realiseren en niet de omschrijving die bij het ID hoort.

Ik hoop dat je hier weer wat verder mee kunt...


Grtz,
 
Hey Skybird,

ben je er ondertussen al uit? anders kan ik je misschien verder helpen.

groetjes,

Karin
 
Ben er nog altijd niet uit, het bljft een raadsel.

Als jij nog ideeen hebt dan hoor ik ze graag.


bedankt voor je reaktie
 
Ik heb niet de volledige uitleg gevolgd (vind ik nogal ingewikkeld), alleen je startvraag gelezen.

Zelf zou ik het opgelossen door 2 gekoppelde tabellen te maken:

tblCategorie met de velden IDCategorie (geïndexeerd) en CategorieNaam

tblProdukt met de velden IDCategorie, IDProdukt (geïndexeerd) en ProduktNaam

zo kan je in tblProdukt de link tussen de catergorie en de produkten leggen.


nadien maak je op je formulier twee velden:

IDCategorie en IDProdukt (bij eigenschappen/rijbron instellen dat IDCategorie de gekozen waarde heeft )

als je dan bij IDProdukt bij de gebeurtenis Kiezen het volgende invuld: Me![IDProduct].Requery
past access normaal elke keer de keuzelijst aan.



ik hoop dat ik duidelijk ben geweest en dat je er iets aan hebt!

groetjes

Karin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan