Filteren van subform velden

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Goedemorgen,

Ik heb een voorbeelddatabase gemaakt waarin ik mijn probleem probeer te verduidelijken
In een subformulier koppel ik records via een veel-op-veel relatie
Er is in een andere tabel vastgelegd welk vervoermiddel een bepaald persoon mag berijden.
in het subformulier kies ik eerst een naam, en daarna kies ik een vervoermiddel die betrokkene mag gebruiken. Dit veld vervoermiddel wordt opnieuw gefilterd na keus van de naam.
Code:
Private Sub PersoonID_AfterUpdate()
    VervoermiddelID.Requery
End Sub
Als ik een volgende record invul dan wordt ook het eerste record opnieuw gefilterd. Hoe moet ik de requery uitvoeren op het huidige record (dus zonder de andere records te beinvloeden)
Of moet ik iets doen met het bepalen van de rijbron voor het veld VervoermiddelID ?


mvg
John
 

Bijlagen

  • Test.zip
    55,3 KB · Weergaven: 26
Laatst bewerkt:
k zie in je hoofdformulier een heel ongebruikelijke Rijbron (SELECT tblAktiviteit.AktiviteitID, tblAktiviteit.Aktiviteit, tblAktiviteit.Bijzonderheden, tblAktiviteit.TypeAktiviteitID, tblAktiviteit.TeamleiderID, tblAktiviteitLesgeven.AktiviteitID, tblAktiviteitLesgeven.NormAantalUur, tblAktiviteitOntwikkelen.Aktivi) die in ieder geval niet klopt. En verder zie ik gee tabel met vervoermiddelen; in ieder geval geen tabellen met records waar ik die gegevens uit kan halen. Kun je dat nog eens verduidelijken? En werkt het formulier bij jou dan wel?
 
Of lukt wat ik wil niet in doorlopend formulier, en moet ik een enkelvoudig formulier maken voor invoeren nieuwe records ?
 
Leg eerst eens goed uit wat je eigenlijk wilt; ik zie in je db twee koppelingen voor voertuigen, één voor personen en één voor werkploegen. Wat is daar de bedoeling van?
 
Hoi Michel,
Dit is natuurlijk een voorbeelddatabase. In mijn echte database is het principe gelijk, maar dan met andere tabellen en vullingen.

Uitgaande van mijn voorbeeldje: ik heb vastgelegd met welk vervoermiddelen een bepaald persoon mag rijden.
Daarnaast leg ik vast dat een ploeg uit meerdere personen bestaat. (WerkploegPersoon)
Voor een bepaalde ploeg mag iemand maar met één voertuig rijden. Als ik een persoon gekozen heb, wil ik filteren uit de mogelijke vervoermiddelen van die persoon, en de keus uiteindelijk vastleggen in WerkploegPersoon.

In mijn echte database gaat het om een duikploeg, met 1 of meerdere duikers. Elke duiker mag met meerdere duiksystemen duiken, maar voor een duik duikt hij uiteraard maar met 1 type, en dat type moet vastgelegd worden (een volgende stap is het vastleggen van het mengsel waar mee gedoken wordt; dit is weer afhankelijk van het gekozen duiksysteem, dus moet pas gefilterd worden na keus van duiksysteem)

ik hoop dat mijn probleem een beetje helder is.

alvast bedankt voor het meedenken,

mvg
John
 
Dan is het logisch om de link tussen WerkploegPersoon en Vervoermiddel weg te halen; de vervoersmiddelen (of duikmiddelen) zijn immers al bepaald door de tabel PersoonVervoersmiddel. In WerkploegPersoon kun je per werknemer dus alleen vervoersmiddelen vastleggen die in de tabel PersoonVervoersmiddel zijn vastgelegd.
 
Michel,

Ik heb de bedoelde relatie verwijderd, maar het systeem doet nog niet wat ik wil.
De requery beinvloedt ook de andere records. Zou jij eens kunnen kijken wat ik fout doe ?

mvg
John
 

Bijlagen

  • FilterProbleem.zip
    36,4 KB · Weergaven: 30
Iemand een idee of je kan filteren binnen velden van een doorlopend formulier (zie voorbeeld filterprobleem database)?

mvg
John
 
Het kan uiteraard wel, maar je moet een paar dingen aanpassen. Om te beginnen: het is niet handig als tekstvakken en keuzelijsten dezelfde naam hebben als het veld dat er aan gekoppeld is. Het mag wel (Microsoft doet zelf niet anders) maar het is lastig omdat je in vba niet meer verwijst naar een specifiek opbject. Is VervoerID een verwijzing naar het veld VervoerID of naar de keuzelijst VervoerID?
Ik maak er zelf een gewoonte van om tekstvakken aan te duiden met txt, keuzelijsten met lst en keuzelijsten met invoervak als cbo. Dus als ik verwijs naar cboVervoerID, dan is dat per definitie een keuzelijst met invoervak. Dat maakt het programmeren gelijk een stuk makkelijker, want je kunt nu heel gericht naar een object verwijzen. Omdat je nu in je formulier velden hebt die hetzelfde heten als de keuzelijsten, kan Access niet bepalen welk object je nu uitleest. Pas je de namen dus aan, dan gaat het al gelijk een stuk beter.
Verder gebruik je Requery op een verkeerde manier/plek. Met Requery wordt een keuzelijst opnieuw ingelezen, en raakt hij de reeds geselecteerde waarde kwijt. In een doorlopend formulier heb je maar één keuzelijst gemaakt, maar je ziet van die keuzelijst meerdere exemplaren; je moet je realiseren dat het nog steeds maar één keuzelijst is! Als je die een requery geeft, maak je dus alle overige exemplaren (visueel althans) ook leeg. Ik zou een requery dan ook alleen doen bij het kiezen van de keuzelijst.
Op deze site vind je een tutorial die e.e.a. hopelijk wat beter uitlegt :)
 
De meest simpele oplossing is overigens om het sleutelveld niet te verbergen; meestal heb je in een keuzelijst (met invoervak) de eerste kolom verborgen en bevat die kolom het ID veld. Dit veld is dan ook de afhankelijke kolom. Access kan wèl de gekozen recordwaarde (afhankelijke kolom) tonen, maar niet een andere kolom uit de keuzelijst. Die wordt alleen getoond als je de keuzelijst zelf opent. Dus de simpelste oplossing is, om de afhankelijke kolom niet te verbergen. Omdat je dan niet meer de omschrijving van de gekozen waarde ziet, zou je daarnaast een tekstveld kunnen maken die de gekozen kolomwaarde laat zien. Op die manier heb je ook de omschrijving op het formulier.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan