meerdere voorwaarden voor verbergen van invoer velden

Status
Niet open voor verdere reacties.

macbran

Gebruiker
Lid geworden
3 apr 2007
Berichten
5
Hallo,
Ik heb een database gebouwd waarin docenten bepaalde gegevens in kunnen voeren. Als zij van een bepaald persoon een formulier openen, dan moeten er van die persoon een aantal zaken gecontroleerd worden. Aan de hand daar van dienen de invulvelden die van toepassing zijn zichtbaar gemaakt worden.

Het is een Hoofd Formulier (FRM_INV_invoeren op persoonsgegevens) met twee naast elkaar werkende subformulieren het ene subformulier geeft functiegegevens weer die nodig zijn voor de validatie, het andere sub formulier bevat de invulvelden waarvan de eigenschappen aangepast moeten worden.

In bijgaande script probeer ik hetgeen ik graag zou willen voor elkaar te krijgen maar het is een voor mij nogal complex verhaal aan het worden en ik zit verlegen om wat inspiratie en tips. Ik ben "nog" niet zo bedreven in VBA maar ben er wel achter dat het daar in geregeld moet worden.

In het script heb ik achter quotes aanvullende info getypt

Het is de bedoeling dat als de expressie van A = waar de rest niet wordt uitgevoerd, ik heb daar ook al geprobeerd een geneste If van te maken en ben ook aan het experimenteren geweest met select case. Maar zonder succes.
Als A onwaar is dan heeft B prio, dan C dan D
F als A, B, C, D onwaar zijn
E mag alleen niet uitgevoerd worden als A waar is.

Ik heb dit stukje script in de form load en de form update van het hoofdformulier gezet, Vragen:
1. kloppen mijn verwijzingen naar de verschillende besturingselementen wel?
2. werkt dit script bij laden voor of na de query wordt uitgevoerd, als het er voor is staat er nl niets in de cellen waar naar verwezen wordt.
3.als ik een nieuwe medewerker zoek dan gebruik ik een macro die op medewerkersnummer of arbeidsplaats filtert. (werkt de after update dan ook?)
4. hoe kan ik dit script het eenvoudigst laten doen wat ik wil, iemand tips (hij doet nu niet wat ik wil en laat alleen lblLZM zien omdat dat de enige is die niet als eigenschap verborgen heeft denk ik)
5. wat is de beste plaats waar ik het script kan wegzetten, in de formload en afterupdate van het hoofdformulier of het subformulier waar de te wijzigen eigenschappen van de besturingselementen op staan?

Bij voorbaat mijn hartelijke dank voor de hulp. :d
 
Laatst bewerkt:
Het riekt als een nodeloos ingewikkelde constructie, dat om te beginnen. En ik vermoed dat je het subformulier ook niet netjes genormaliseerd hebt, gezien velden als [IBT 1 afname] t/m [IBT 5 afname]. Om er echt wat zinnigs van te zeggen, hebben we een voorbeeldje nodig; dit soort formulieren ga ik niet zelf namaken :)
 
Snap ik

Ik had al zo een vaag vermoeden dat ik er aan zou moeten geloven, ik moet hem nu helemaal gaan depersonaliseren, dus daar ben ik wel even druk mee.
Alvast bedankt voor je snelle reactie.
 
Ik krijg de database in een rar niet geupload naar de bijlage manager

Zie ik een beveiliging of maximale groote over het hoofd?

gr Mac
 
Als het niet lukt, mag je 'm wel mailen, dan zet ik 'm wel in de draad.
 
Laatst bewerkt:
Nu nog snappen wat je aan het doen bent :)
Eerst een algemene tip: je code wordt een stuk overzichtelijker (en weegt gelijk een heel stuk minder) als je hem zo schrijft:

Code:
If (Me.Langdurig = 0) And (Me.ME_BE = True) Then        'is een selectie vakje uit het hoofdformulier
    With Forms![FRM_INV_invoeren op persoonsgegevens]![FRM_INV_SUB_invoeren_IBT_gegevens]
        .Form![DCP afname].Visible = True
        .Form![IBT nr DCP].Visible = True
        .Form![DCP].Visible = True
        .Form![AED/BLS getraind afname].Visible = True
        .Form![IBT nr AED/BLS getraind].Visible = True
        .Form![AED].Visible = True
        .Form![MBV deelname].Visible = True
        .Form![IBT nr MBV].Visible = True
        .Form![MBV].Visible = True
        .Form![lblLZM].Visible = False
    End With
End If
 
Dat ziet er inderdaad een stuk efficienter uit, ik kende die mogelijkheid niet, ik kreeg steeds foutmeldingen op de regels waarin ik de eigenschap instelde en die waren er uit toen ik ze volluit geschreven had, dit is wel een logische, bedankt voor je tip heb ik weer iets geleerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan