Filteren op basis van keuzelijst

Status
Niet open voor verdere reacties.

dollaarke

Gebruiker
Lid geworden
14 nov 2011
Berichten
11
Beste,

eerst en vooral even melden dat deze topic ook al loopt op een ander forum maar daar is de topic wat onduidelijk geworden en vooral stilgevallen.

Een voorbeeldje van mijn database kan hier gevonden worden:
http://www.mijnbestand.nl/Bestand-7UX4OMEATRJ8.zip

Verder is er de vraag:

Via een formulier stel ik een tabel samen die informatie uit verschillende andere tabellen samenbrengt.

Ik wens dus een tabel samen te stellen (genaamd "Definitief") via een formulier (eveneens genaamd "Definitief").

In dit formulier komen voor deze vraag twee relevante velden voor, namelijk de velden "Fusiegemeente" en "Straatnaam"

Het is namelijk zo dat elke fusiegemeente in een tabel (genaamd "gemnm") gekoppeld is aan een GEMID (de unieke code van een gemeente)
Vervolgens is er de tabel "straatnm" waarin per gemeente (op basis van de GEMID) alle straten staan.

De relaties zijn volgens mij ok.

De vraag is nu: Hoe kan ik ervoor zorgen dat de keuzelijst bij het veldje "Straatnaam" in het formulier gefilterd word op basis van de waarde die ik ingegeven heb in het veld "Fusiegemeente" ??


Hopelijk kan iemand me hier de weg wijzen ...

Vriendelijke groeten,

dollaarke
 
En die vraag blijft simpel te beantwoorden :)
Overigens waren je koppelingen niet helemaal in orde. Die zijn dus aangepast. En hoef je alleen je keuzelijst Fusiegemeente te filteren (als je dat al zou willen; zelf zou ik daar nog een keuzelijst boven hangen, is veel makkelijker). Elke keuzelijst die afhankelijk is van een andere keuzelijst, ziet namelijk toch alleen maar de gekoppelde gegevens.
 

Bijlagen

Hai OctaFish,

bedankt voor de snelle reactie.

In jouw voorbeeld klopt het inderdaad maar als ik het 'naboots' in mijn grote database lijkt het niet te lukken.

Volgens items heb ik gedaan:
* Verwijderen van relatie tussen 'gemnm' en 'straatnm'. (Waarom is dit eigenlijk :-) ? )
* kopieren van volgende programmacode voor het formulier:

Code:
Private Sub cboFusiegemeente_AfterUpdate()
    Me.cboStraatnaam.Requery
End Sub

Maar het lukt nog steeds niet?

Zijn er nog andere programmacode's toe te voegen of relaties te bewerken?

Mvg,

Dollaarke
 
De relatie tussen gemnm en gem is ook niet goed; die heb je nu gekoppeld op basis van ID. In gemnm moet je koppelen met GEMID, niet met ID. Je wilt tenslotte per gemeente meerdere fusiegemeentes kunnen koppelen. De reden dat de andere relatie wegmoet, is eigenlijk simpel: de link tussen Gemeente en straatnamen ligt in de tabel gemnm (mits goed gekoppeld).
Je hebt misschien de keuzelijsten nog niet hernoemd, en de Rijbron nog niet aangepast.
 
Ok,

ik heb geprobeerd in mijn database op alle aanpassingen te maken maar het lukt me helaas niet. Ik heb dan jou database erbij genomen, alles geïmporteerd, en dat lukt wel... Ik kan dus helaas niet aangeven aan de mensen op het forum hoe het is opgelost :-)

Wel heb ik nog de volgende 'issue', namelijk: de query die bij het veld "fusiegemeente" werd gebruikt om alle "oost-vlaamse gemeenten" eruit te filteren wordt nu niet meer gebruikt. Ik zie ook dat je nu werkt met NIScodes, ik vermoed dat dat de reden is...

Hoe kan ik nu in jou systeem opnieuw een query inpassen (de bestaande of eventueel een nieuwe op basis van NIScodes) die de oost-vlaamse gemeenten uit de ganse lijst haalt?

Mvg,

Dollaarke
 
Dat een oplossing die je letterlijk overneemt soms niet werkt, valt onder de geheimen van Access; dat overkomt iedereen. Mij dus ook.... Maak je een formulier, blijkt er iets niet te werken dat wel zou moeten werken, maak je vervolgens het formulier opnieuw op exact dezelfde manier, werkt het wel.... Ik ben opgehouden mij daarover te verbazen :D
Ik heb de filtering op oost-vlaamse gemeenten eruit gehaald voor het gemak. Ik kan mij namelijk goed voorstellen dat je dynamisch wilt kunnen filteren op basis van regio's. En dat zou je kunnen doen door er een keuzelijst (of tekstvakken, als je met ingetypte codes wilt werken) boven te hangen, die dat filter toewijst aan de keuzelijst met gemeentes. Op die manier kun je de meest flexibele selecties maken. En voor het onderhoud is het ook een stuk simpeler, omdat je maar één basisquery nodig hebt.
 
You could be right, dit zal muziek voor in de toekomst zijn.

Ondertussen heb ik hetzelfde geprobeerd bij het veld Deelgemeente.

Ik heb een tabel opgemaakt, genaamd Deelgemeenten. Hierin komen de kolommen GEMID en Deelgemeente voor.
Vervolgens heb ik in de tabel Definitief en het formulier het tekstveldje Deelgemeente vervangen door een opzoekveld met daarin de waarden uit de tabel Deelgemeenten.

Tot hier dus alles vrij normaal.

Daarna heb ik een één op véél relatie aangemaakt tussen het ID van de tabel 'gem' en GEMID van de tabel 'Deelgemeenten'.

Ik heb in de programmeercode van mijn formulier volgende zinnetje toegevoegd aan het onderdeel 'Fusiegemeente_AfterUpdate': Me.cboDeelgemeente.Requery
De naam van het veld Deelgemeente werd via het eigenschappenvenster aangepast naar cboDeelgemeente.

In de rijbron werd volgende geplaatst:
Code:
SELECT Deelgemeenten.Deelgemeente, Deelgemeenten.GEMID FROM Deelgemeenten WHERE (((Deelgemeenten.GEMID=Forms!Probje!cboFusiegemeente)) ORDER BY Deelgemeenten.Deelgemeente);

Als ik nu alles laat uitvoeren in het formulier krijg ik volgende error:
Syntaxisfout (operator ontbreekt) in query-expressie (((Deelgemeenten.GEMID=Forms!Probje!cboFusiegemeente)) ORDER BY Deelgemeenten.Deelgemeente).

Het formulier Probje is gewoon een exacte kopie van het formulier Definitief.

Waar kan het fout gelopen zijn?

Cheers
 
Die fout snap ik wel. Ik zou eerder dit verwachten:
Code:
SELECT Deelgemeente, GEMID FROM Deelgemeenten WHERE (GEMID=" & Me.cboFusiegemeente & ") ORDER BY Deelgemeente;
Ik neem aan dat <Afhankelijke veld> de waarde 2 heeft?
 
Met <afhankelijke veld> bedoel je <afhankelijke kolom> in het eigenschappenvenster?

Ik heb het geprobeerd zo met jouw expressie en dan kreeg ik de error dat de gegenstypen niet kloppen.

De kolommen in de tabel deelgemeenten zijn: ID, GEMID, Deelgemeente, Postcode Deelgemeente (4 kolommen dus waarvan GEMID kolom 1 is)

Ik heb zowel geprobeerd met waarde 1 als 2 in de eigenschap <afhankelijke kolom> van het veld Deelgemeente maar beide lijken niet te werken.

Cheers
 
Inderdaad; ik tikte de tekst uit het koppie, en dan gooi je nog wel eens een term door elkaar :)
Ik kan in je voorbeeldcode niet zien op basis waarvan je de gegevens aan elkaar koppelt; normaal gesproken is dat op basis van ID velden, die vaak numeriek zijn. Koppel je op basis van een naam (tekst dus) dan is de string anders. Maak er anders weer een voorbeeldje van; dat praat wat makkelijker.
 
Het is me gelukt :-) Na lang proberen, nabootsen en wat hulp...

Deze topic mag gesloten worden gezien m'n originele vraag opgelost is!

Alvast bedankt!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan