Velden niet zichtbaar na opnieuw Formulier openen (wel aangevinkt)

Status
Niet open voor verdere reacties.

Marcotica

Gebruiker
Lid geworden
20 sep 2007
Berichten
83
Hallo,

Ik zit met het volgende. Ik heb een formulier gemaakt met checkbox-en.
Wanneer deze gekozen worden wordt een invoer veld getoond. En dat werkt perfect, maar.......
wanneer ik het formulier sluit en opnieuw open, dan worden de invoervelden van de aangevinkte checkboxen niet zichtbaar.....Vreemd.
Hierbij de data base. Wie o Wie weet hier een oplossing voor?

Alvast bedankt voor de tijd in eventuele inspanningen. :confused:
 

Bijlagen

Dat je de tekstvelden niet ziet, is wel logisch: je hebt bij de instellingen aangegeven dat ze zijn verborgen! Het enige moment dat je ze zichtbaar maakt, is als je een selectievakje aanklikt. Bij het openen van het formulier is dat uiteraard niet van toepassing, dus dan geldt de standaardinstelling van de tekstvakken.
Je moet dus elke keer als je naar een nieuw record gaat opnieuw naar de status van de selectievakjes kijken, en dan het betreffende tekstvak zichtbaar maken. Dat kan op een (hopelijk ook in jouw ogen...) simpele manier, die ik tegenwoordig heel vaak gebruik: je zet de naam van het tekstvak in de eigenschap <Extra Info> (of <Tag> in het engels) van het selectievakje. Vervolgens laat je onderstaande code er op los.

Code:
Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Controls
    With ctl
        Select Case .ControlType
            Case acCheckBox
                If .Tag <> "" Then
                    If .Value = vbTrue Then
                        Me(.Tag).Visible = True
                    Else
                        Me(.Tag).Visible = False
                    End If
                End If
            Case Else
        End Select
    End With
Next ctl
End Sub
De code loopt door alle checkboxen heen, en kijkt vervolgens of de checkbox is aangevinkt, en vervolgens of er een naam is voor het bijbehorende tekstvak. Als aan die voorwaarden is voldaan, wordt het tekstvak zichtbaar gemaakt.
 
Hoi Octo,
Bedankt voor de reactie. Iets waar ik niet op zou zijn gekomen.
Ondanks je uitgebreide info, lukt het me niet om dit in te voeren.
Ik heb nu dit...Is dit juist
Code:
Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Controls
    With ctl
        Select Case .ControlType
            Case acCheckBox
                If Me.Ctl10_Offertes_RekeningCourantNr.Tag <> "" Then
                    If .Value = vbTrue Then
                        Me.Ctl10_Offertes_RekeningCourantNr.Visible = True
                    Else
                        Me.Ctl10_Offertes_RekeningCourantNr.Visible = False
                    End If
                End If
            Case Else
        End Select
    End With
Next ctl
End Sub
Ik hoor het wel van je (als je wilt) wat ik niet juist doe


Dat je de tekstvelden niet ziet, is wel logisch: je hebt bij de instellingen aangegeven dat ze zijn verborgen! Het enige moment dat je ze zichtbaar maakt, is als je een selectievakje aanklikt. Bij het openen van het formulier is dat uiteraard niet van toepassing, dus dan geldt de standaardinstelling van de tekstvakken.
Je moet dus elke keer als je naar een nieuw record gaat opnieuw naar de status van de selectievakjes kijken, en dan het betreffende tekstvak zichtbaar maken. Dat kan op een (hopelijk ook in jouw ogen...) simpele manier, die ik tegenwoordig heel vaak gebruik: je zet de naam van het tekstvak in de eigenschap <Extra Info> (of <Tag> in het engels) van het selectievakje. Vervolgens laat je onderstaande code er op los.

Code:
Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Controls
    With ctl
        Select Case .ControlType
            Case acCheckBox
                If .Tag <> "" Then
                    If .Value = vbTrue Then
                        Me(.Tag).Visible = True
                    Else
                        Me(.Tag).Visible = False
                    End If
                End If
            Case Else
        End Select
    End With
Next ctl
End Sub
De code loopt door alle checkboxen heen, en kijkt vervolgens of de checkbox is aangevinkt, en vervolgens of er een naam is voor het bijbehorende tekstvak. Als aan die voorwaarden is voldaan, wordt het tekstvak zichtbaar gemaakt.
 
Je moet mijn code letterlijk overnemen.
IfMe.Ctl10_Offertes_RekeningCourantNr.Tag <> "" Then
Werkt namelijk alleen als je rechtstreeks je controls aanspreekt. De grap van de hele routine is juist dat hij alle controls doorloopt, en controleert. Als je er niet uitkomt, zal ik het voorbeeld wel terugposten, want ik heb 'm ondertussen voor alle controls aangepast, om te zien of-ie goed werkt (wat hij uiteraard doet :) )
 
Hi Oc,

Oke, weer terug gezet naar je letterlijke code.
Maar helaas doet ie het nog steeds niet.

Code:
Private Sub Form_Current()

Dim ctl As Control
For Each ctl In Controls
    With ctl
        Select Case .ControlType
            Case acCheckBox
                If .Tag <> "" Then
                    If .Value = vbTrue Then
                        Me(.Tag).Visible = True
                    Else
                        Me(.Tag).Visible = False
                    End If
                End If
            Case Else
        End Select
    End With
Next ctl

End Sub

Je moet mijn code letterlijk overnemen.
IfMe.Ctl10_Offertes_RekeningCourantNr.Tag <> "" Then
Werkt namelijk alleen als je rechtstreeks je controls aanspreekt. De grap van de hele routine is juist dat hij alle controls doorloopt, en controleert. Als je er niet uitkomt, zal ik het voorbeeld wel terugposten, want ik heb 'm ondertussen voor alle controls aangepast, om te zien of-ie goed werkt (wat hij uiteraard doet :) )
 
Niks zo mooi als een werkend voorbeeld ;)
 

Bijlagen

YES TOPPER de TOP.
Hebt helemaal gelijk als je zegt dat een voorbeeld het beste les materiaal is.
Eerst zelf aangepast, maar gaf een fout melding aan in het VBA script.
Later jouw Form gekopieerd, en dit bleek 'm te zijn hoor.
Het werkt perfect.
Bedankt voor je hulp en je tijd OctoFish.



Niks zo mooi als een werkend voorbeeld ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan