Voorwaardelijke velden

Status
Niet open voor verdere reacties.

Silence25

Gebruiker
Lid geworden
4 aug 2009
Berichten
22
Hallo,

Hoe kan ik een voorwaardelijk(e)/pop-up veld/know/keuzelijst maken? Bijvoorbeeld wanneer er geen ordernummer is ingevuld zijn er geen velden te zien en wanneer er wel een ordernummer is ingevuld komen er velden/knoppen/keuzelijsten tevoorschijn zoals inkoop, kostprijs, verkoopdatum, leverdatum enz.

Alvast bedankt!
 
Hoi Silence25,

Je kunt hiervoor de eigenschap Visible gebruiken.

Ik heb een voorbeeldje gemaakt waarbij velden (2 en 3) zichtbaar worden als je de 1e invult.
Bij formulier openen is tekstvak 1 leeg, dus zullen velden 2 en 3 worden verborgen.

Veel suc6.
 

Bijlagen

bedankt! hier kan ik mee uit de voeten.

wanneer ik er niet uit kom hoor je het wel.
 
Ik heb dit voobeeld bestand bekeken en gezien dat dat is wat ik ook wil hebben.

Ik heb een ja/nee veld in mijn tabel. Het veld medicijnen. Ook heb ik een memo veld Medicijnoverzicht.

Nu wil ik in het formulier het veld medicijnoverzicht pas zichtbaar hebben als het vakje bij medicijnen aangevinkt is.

Nu heb ik geprobeerd om de gebeurtenisprocedure uit het voorbeelbestand te kopieren en aan te passen naar mijn eigen veld namen. Ik heb geen verstand van gebeurtenisprocedures, maar ik kreeg geen foutmeldingen.

Maar op het formulier blijft het veld medicijnoverzicht zichtbaar of het vakje medicijnen nu aangevinkt is of niet.

Heb je misschien een gebeurtenisprocedure voor deze velden die ik zo in kan voegen in mijn formulier???
 
Ik krijg het idee dat je niet begrijpt hoe het werkt. Bijgaand een voorbeeldje hoe het in jou situatie zou kunnen. Als je iets niet begrijpt kun je het altijd vragen.
 

Bijlagen

Ik begrijp inderdaad niet zo goed hoe het werkt. Ik heb hierbij een bestandje bijgevoegd waar ik de gebeurtenisprocedure uit jouw bestand heb ingevoegd meegestuurd

Het gaat dus om het eerste tabblad waarbij medicijnoverzicht verborgen moet worden als er geen vinkje bij medicijnen staat.

Ik krijg het niet werkend.
 

Bijlagen

Oeps het is in Access 2007. Ik ben niet zo op de hoogte met de beveiliging tegen macro's in Access. Ik weet wel dat je de database op een vertrouwde locatie moet zetten, maar hoe dat weet ik niet zoveel van.

Als je de database opstart dan zie je een knop "Opties" ongeveer midden onder het lint (Ribbon), Als je hier op klikt opent een scherm. Hier selecteer je optie "Deze inhoud inschakelen. Nu zijn de Macro's en VBA code geactiveerd en werkt de code.

Je hebt de code nu geplaatst bij het klik event van je selectievakje. Je code wordt dur alleen geactiveerd als je op het selectie vakje klikt. Je code moet echter ook geactiveerd worden bij het aanwijzen van het record, dan moet er immers ook gekeken worden of er in het selectievakje een vinkje staat of niet. Dat doe je bij de gebeurtenis (event) aanwijzen (Current) van het formulier. Als je bij de code kijkt van het formulier zie je onderstaande code staan:

Code:
Private Sub Form_Current()
[COLOR="Red"]    Call Medicijnen_Click[/COLOR]
End Sub

Private Sub Medicijnen_Click()
[COLOR="DarkGreen"]    If Me.Medicijnen = 0 Then
        Me.Medicijnoverzicht.Visible = False
    Else
        Me.Medicijnoverzicht.Visible = True
    End If[/COLOR]
End Sub

Met de rode tekst wordt de groene tekst (code) geactiveerd.
 

Bijlagen

Helemaal geweldig!!!!!

hier ben ik heel blij mee. Dank je voor je tijd en voor je moeite. Dit werkt perfect.
:thumb:
 
toch nog even een vraag

Het werkt heel goed, maar ik heb op dit formulier een tabbesturingselement.

Het stukje over medicijngebruik heb ik op de eerste tab staan.

Nu wil ik op de tweede tab ook sommige velden pas zichtbaar laten zijn als er een vinkje is gezet bij een vraag op diezelfde tab.

Als ik de procedure aanpas naar die velden, werkt het wel, maar dan werkt het vak van de medicijnen op de eerste tab niet meer.

Moet ik er misschien iets aan toevoegen of kan het niet op twee tabs?
 
Als ik de procedure aanpas naar die velden, werkt het wel, maar dan werkt het vak van de medicijnen op de eerste tab niet meer.

Dat is logisch. Je moet de bestaande code niet aanpassen, maar een nieuwe schrijven voor de nieuwe situatie.
 
Hoe moet ik aangeven dat het om een ander tabblad gaat? want als ik ieder veld dat aangeeft dat het om medicijnen gaat verander naar bv slaapoverdag, dan lukt het dus niet.

Ik heb even gekeken of ik er zelf achter kan komen of ik iet in de programmacode anders moet aangeven, maar ik zie het niet. Waarschijnlijk zit het hem in :

Private Sub Form_Current()
Call Medicijnen_Click
End Sub


Of in het feit dat het om verschillende tabbladen gaat in het zelfde formulier, maar ik weet het echt niet. Als het gaat om de bovenstaande code, wat moet ik daar dan inzetten?

Ik heb even een voorbeeldje meegestuurd, dan kan je zien wat ik bedoel. Het gaat dus om het tabblad medisch bij het vakje slaap overdag.(slaap van / tot moet dan vervallen bij nee)

Het zelfde geld voor het tabblad dromen vervuld bij het vakje tweede droom en derde droom.

Ik hoop dat je me de goede kant op kunt wijzen
 

Bijlagen

Misschien dat je het met de volgende code wel snapt:

Code:
Private Sub Form_Current()
    Call Medicijnen_Click
    Slaapgedrag
    
End Sub
Code:
Private Sub chkslaap_overdag_Click()

    Slaapgedrag

End Sub
Code:
Sub Slaapgedrag()

    If Me.chkslaap_overdag.Value = -1 Then
        Me.txtslaap_van.Visible = True
        Me.txtslaap_tot.Visible = True
        Me.lblSlaapVan.Visible = True
        Me.lblSlaapTot.Visible = True
    Else
        Me.txtslaap_van.Visible = False
        Me.txtslaap_tot.Visible = False
        Me.lblSlaapVan.Visible = False
        Me.lblSlaapTot.Visible = False
    End If

End Sub
Ik heb, zoals je uit de procedure kunt zien, een aantal objectnamen veranderd. Dit voor de duidelijkheid. Zo heb ik de tekstvelden voorzien van de veldaanduiding txt, de labels van de aanduiding lbl en het selectievakje van de aanduiding chk

Verder is de procedure in wezen gelijk aan het selectievakje Medicijnen: je controleert de waarde van het selectievakje,en bij -1 (vakje gevinkt) worden tekstvak en label getoond, bij overige waarden verborgen.
Ook deze procedure roep je weer aan bij het Laden van het formulier, want je wilt gelijk de goede status op het formulier zien.

Formulieren met tabbladen werken wat dit betreft niet heel anders als normale formulieren. Als de naam van het object te selecteren is, kun je het instellen/aanroepen.
Heb je meer tekstblokken/labels die je wilt verbergen/tonen a.d.h. van selectievakjes, dan raad ik je dus aan om tekstvak en label duidelijk herkenbaar te benoemen, zodat je ze gemakkelijk terug kunt vinden met ME.
Een label met de naam Bijschrift249 kan geen mens zomaar plaatsen.... Jij weet zonder dat je in de db kijkt ook niet welk label dat is. Het label lblSlaap_Tot kun je met je ogen dicht aanwijzen...
 
Oké, ik heb hier even mee gestoeid en nu snap ik inderdaad wat de bedoeling is.

eerst even een groep maken voor de knoppen en de velden waar het over gaat. En vervolgens die groep indelen en aangeven per groep wat er moet gebeuren.

Top!! Dat vind ik het voordeel van je vraag stellen op dit forum: dan ka ik er ook nog van leren en dat is precies de bedoeling.

Bedankt!!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan