Toon posts:

[Access] Comboboxjes filteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

Een simpel probleempje, maar ik kan er toch geen oplossing voor vinden.
Stel ik heb de volgende twee (proef) tabelletjes:

fabrikant
-----------
+ naam

Product
----------
+ naam
f fabrikant_naam

+ staat voor primary key uiteraard, f voor foreign

Waardes:

fabrikant
-----------
fabr1
fabr2

product
----------
prod1 fabr1
prod2 fabr2

Nu heb ik nog een andere tabel, waarin ik bijvoorbeeld orders in wil voeren. Dit wil ik doen door in een bij de ordertabel behorend form in een drop down boxje een fabrikant te kiezen, en vervolgens daarbij een product te kiezen, maar bij dat kiezen wil ik natuurlijk alleen de producten van de gekozen fabrikant zien. Maar wat gebeurd er? Wanneer ik een fabrikant kies, krijg ik ook gewoon de producten van de andere fabrikant te zien. Dus:

Ik kies fabr1 in combo1
in combo2 kan ik nog steeds prod1 en prod2 kiezen tewijl prod2 van fabrikant 2 is.

Ik heb al vanalles geprobeerd maar Access blijft vrolijk alle producten weergeven.

Tnx in advance

  • Masch
  • Registratie: Augustus 2002
  • Laatst online: 17:41
Heb je er aan gedacht om de juiste relaties aan te geven, injouw geval dus fabrikant naam --> product naam.

offtopic:
Overigens is het beter om als keys niet namen te gebruiken, maar iets anders, namen hoeven namelijk niet persé uniek te zijn

(\__/) Ik wist totaal niet wat hier neer te zetten....
(='.'=) Dus het werd....
("")("") Een konijn!!


  • Boss
  • Registratie: September 1999
  • Laatst online: 21:50

Boss

+1 Overgewaardeerd

Ik heb al vanalles geprobeerd maar Access blijft vrolijk alle producten weergeven
Define vanalles :)

Je zou bijvoorbeeld op het na_bijwerken event van de fabrikant box, de rowsource van de product box kunnen bijwerken en er een requery op uitvoeren.

Als je echt Ik heb al vanalles geprobeerd had gedaan was je daar wel uitgekomen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Masch schreef op 02 juni 2004 @ 13:05:
Heb je er aan gedacht om de juiste relaties aan te geven, injouw geval dus fabrikant naam --> product naam.
[/quote]

Fabrikant is met naam gekoppeld aan de foreign key naam_fabrikant in product (omdat het een een-op-meer relatie is)

Verwijderd

Topicstarter
Boss schreef op 02 juni 2004 @ 13:13:
[...]


Define vanalles :)

Je zou bijvoorbeeld op het na_bijwerken event van de fabrikant box, de rowsource van de product box kunnen bijwerken en er een requery op uitvoeren.

Als je echt Ik heb al vanalles geprobeerd had gedaan was je daar wel uitgekomen.
Ik ben geen leek maar ook geen expert hierin, bedoel je de rowsource bijwerken van de tweede combobox? Wat moet ik er van maken dan? Best frustrerend dat ik zoiets simpels niet voor elkaar krijg :|

[ Voor 6% gewijzigd door Verwijderd op 02-06-2004 13:22 ]


  • Masch
  • Registratie: Augustus 2002
  • Laatst online: 17:41
Verwijderd schreef op 02 juni 2004 @ 13:16:
[...]


Fabrikant is met naam gekoppeld aan de foreign key naam_fabrikant in product (omdat het een een-op-meer relatie is)
Ja, duidelijk, had ik niet goed gelezen.

Wat Boss bedoeld is dat je bij de criteria van de 2e combobox een verwijzing moet maken naar je 1e combobox (de fabrikant naam).

(\__/) Ik wist totaal niet wat hier neer te zetten....
(='.'=) Dus het werd....
("")("") Een konijn!!


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 27-08 22:38

NetForce1

(inspiratie == 0) -> true

Verwijderd schreef op 02 juni 2004 @ 13:20:
[...]


Ik ben geen leek maar ook geen expert hierin, bedoel je de rowsource bijwerken van de tweede combobox? Wat moet ik er van maken dan? Best frustrerend dat ik zoiets simpels niet voor elkaar krijg :|
zoiets?
code:
1
"SELECT naam FROM Product WHERE fabrikant_naam = " & [fabrikant]

redelijk simpel toch?
Als je ook nog een id veld in je productentabel hebt zitten, kun je SELECT id, naam doen, het aantal kolommen van je combobox op twee zetten, en de breedte van de eerste kolom 0 maken.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
Ik heb nu zoiets:

SELECT Product.Naam //de waarde die ik in mijn comobox moet hebben
FROM Fabrikant INNER JOIN Product ON Fabrikant.Naam = Product.Fabr_Naam
//join van de twee tabellen
WHERE ([Fabr_Name]=[Manufacturer].value); //daarwaar de foreign key gelijk is aan de waarde in de combobox?

Maar dat werkt niet, komt vooral omdat ik bij de laatste regel nogal aan het gissen ben

Ho eerst ff wat hierboven staat proberen...

[ Voor 6% gewijzigd door Verwijderd op 02-06-2004 13:38 ]


  • Masch
  • Registratie: Augustus 2002
  • Laatst online: 17:41
Verwijderd schreef op 02 juni 2004 @ 13:36:
Ik heb nu zoiets:

SELECT Product.Naam //de waarde die ik in mijn comobox moet hebben
FROM Fabrikant INNER JOIN Product ON Fabrikant.Naam = Product.Fabr_Naam
//join van de twee tabellen
WHERE ([Fabr_Name]=[Manufacturer].value); //daarwaar de foreign key gelijk is aan de waarde in de combobox?

Maar dat werkt niet, komt vooral omdat ik bij de laatste regel nogal aan het gissen ben

Ho eerst ff wat hierboven staat proberen...
Access heeft dit zelf gebreid of niet ;)

Maak hier eens dit van;
code:
1
2
3
SELECT Naam
FROM Product 
WHERE [Fabr_Name] = Me![Jouw_comboboxnaam];

[ Voor 2% gewijzigd door Masch op 02-06-2004 13:56 . Reden: onzin weggehaald ]

(\__/) Ik wist totaal niet wat hier neer te zetten....
(='.'=) Dus het werd....
("")("") Een konijn!!


Verwijderd

Topicstarter
Masch schreef op 02 juni 2004 @ 13:40:
[...]

Access heeft dit zelf gebreid of niet ;)

Maak hier eens dit van;
code:
1
2
3
SELECT Naam
FROM Product 
WHERE [Fabr_Name] = Me![jouw_formuliernaam]![Jouw_comboboxnaam];
Komt met: Enter Parameter value: Me!Order_form!Product

zou je anders even een exampeltje willem mailen: [knip]

bvd!

vragen om antwoorden via de mail is niet de bedoeling op GoT; daarnaast trekt het op deze manier slechts spambots aan :)

[ Voor 20% gewijzigd door Spider.007 op 02-06-2004 13:59 ]


  • Masch
  • Registratie: Augustus 2002
  • Laatst online: 17:41
Verwijderd schreef op 02 juni 2004 @ 13:51:
[...]


Komt met: Enter Parameter value: Me!Order_form!Product

zou je anders even een exampeltje willem mailen: [knip]

bvd!
Ach... stom....

Je moet of ME!product gebruiken of forms!Order_form!Product

En mailen doen we hier niet aan, daar hebben de andere gebruikers die hierop zoeken zo weinig aan he ;)

[ Voor 5% gewijzigd door Spider.007 op 02-06-2004 13:59 ]

(\__/) Ik wist totaal niet wat hier neer te zetten....
(='.'=) Dus het werd....
("")("") Een konijn!!


Verwijderd

Topicstarter
Nope, het werkt niet, pls stuur ff een sampeltje, ik zal de oplossing in dit topic posten i promise.

bvd

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 02 juni 2004 @ 14:01:
Nope, het werkt niet, pls stuur ff een sampeltje, ik zal de oplossing in dit topic posten i promise.

bvd
Zoals Masch ook al opmerkte is het idee van een forum ook dat alles via het forum gaat. Ik geloof best dat je jouw oplossing in dit topic zal posten; liever zie ik echter dat alle informatie ook op het forum wordt uitgewisseld zodat iemand anders met een soortgelijk probleem dezelfde informatie ziet als die jij hebt :)

Overigens zou je ook gewoon wat meer zelfstandig kunnen proberen in plaats van een kant-en-klare oplossing te verwachten :)

[ Voor 11% gewijzigd door Spider.007 op 02-06-2004 14:04 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Masch
  • Registratie: Augustus 2002
  • Laatst online: 17:41
Zoiets als dit moet werken neem ik aan;

Combobox 1;
Name --> Combo_Fabrikant
RowSource -->
code:
1
 select naam from fabrikant


Combobox 2;
Name --> Combo_Product
RowSource -->
code:
1
2
3
select naam 
from product 
where fabrikant_naam = Me!Combo_fabrikant


Ga hier eens mee aan het werk! Veel succes.

[ Voor 4% gewijzigd door Masch op 02-06-2004 14:41 ]

(\__/) Ik wist totaal niet wat hier neer te zetten....
(='.'=) Dus het werd....
("")("") Een konijn!!


Verwijderd

Probeer anders even in VBA code


cboFabrikant = een drop down met de fabrikanten
cboProduct = een dorp down met producten van die fabrikant


#in de form load

private sub Form_Load()
with cboFabrikant
.rowsourcetype = "Table/Query"
.rowsource = "select naam from fabrikant"
.boundculumn = 1
.columncount = 1
end with
with cboProduct
.rowsourcetype = "Table/Query"
.rowsource = ""
.boundculumn = 1
.columncount = 1
with cboProduct

end with
end sub


#als je een andere fabrikant kiest mogen enkel producten van die
#fabrikant getoond worden


private sub cboFabrikant_Change()
with cboProduct
.rowsourcetype = "Table/Query"
.rowsource = "select naam from product where fabrikant_naam = '"& cboFabrikant.value &"'"
.boundculumn = 1
.columncount = 1
end with
end sub


Eventjes uit de losse pols getypt maar ik denk dat het juist is

[ Voor 7% gewijzigd door Verwijderd op 02-06-2004 14:59 ]


Verwijderd

Topicstarter
Oh nog ff melden dat het gelukt is met dank aan o.a Yellow_Snow en Masch:

Code bij onChange event:

Private Sub Fabrikant_Change()

With Product
.RowSourceType = "Table/Query"
.RowSource = "select naam from product where naam_fabrikant = '" & Fabrikant.Value & "'"
.BoundColumn = 1
.ColumnCount = 1
End With

End Sub

[ Voor 21% gewijzigd door Verwijderd op 02-06-2004 15:53 ]


Verwijderd

Gisteren examen acces gehad :)

Graag gedaan
Pagina: 1