knop zichtbaar en niet zichtbaar werk niet altijd

Status
Niet open voor verdere reacties.

wisskid

Gebruiker
Lid geworden
21 sep 2008
Berichten
49
Bekijk bijlage Database1.rar

ik wil op een formulier een knop onzichtbaar maken als een bepaald veld niet is ingevuld ( geen tekst).
ik heb een fictief bestand bijgevoegd waarbij het wel werkt bij een tekstveld maar niet bij een veld gebaseerd op een tabel.
bij het tekstveld ''test'' als er tekst staat (1) is knop "afdrukken'' zichtbaar bij geen tekst (0) is knop "afdrukken'' onzichtbaar.
bij het veld ''straat'' wil ik als er tekst staat de knop ''zoeken'' zichtbaar is, als er geen tekst staat is de knop "zoeken'' onzichtbaar

zie code hier onder:
Code:
Private Sub straat_AfterUpdate()
 
If Nz(Me.straat) = 0 Then

Me.Knop17.Visible = False

Else: Me.Knop17.Visible = True

End If

End Sub

wat doe ik fout..?
 
Laatst bewerkt door een moderator:
Bestand is zó fictief, dat ik 'm niet zie? En wil je de code opmaken met de CODE knop?
 
Goedenavond,

De knoppen "zoeken" en "printen" staan op onzichtbaar. Dit kun je veranderen bij eigenschappen van de desbetreffende knop en dan zichtbaar op "ja" zetten.
In dit voorbeeldje heb ik de knoppen op "enabled" of "disabled" gezet afhankelijk van of de twee velden leeg zijn of niet. Je kunt natuurlijk Enabled vervangen door Visible, zoals in de vraag aangegeven.

Code:
Private Sub Form_Current()
    With Me
        If IsNull(.straat) Then
            .zoeken.Enabled = False
        Else
            .zoeken.Enabled = True
        End If

        If Not IsNull(.test) Then
            .afdruk.Enabled = True
        Else
            .afdruk.Enabled = False
        End If
    End With
End Sub

Private Sub Form_Load()
    With Me
        .zoeken.Enabled = False
        .afdruk.Enabled = False
    End With
End Sub

Private Sub straat_AfterUpdate()
    With Me
        If IsNull(.straat) Then
            .zoeken.Enabled = False
        Else
            .zoeken.Enabled = True
        End If
    End With
End Sub

Private Sub straat_Exit(Cancel As Integer)
    With Me
        If IsNull(.straat) Then
            .plaats.SetFocus
        Else
            .zoeken.SetFocus
        End If
    End With
End Sub

Private Sub test_AfterUpdate()
    With Me
        If Not IsNull(.test) Then
            .afdruk.Enabled = True
        Else
            .afdruk.Enabled = False
        End If
    End With
End Sub

Misschien heb je hier iets aan.

Gr. Jan
 
Ik zou het dan toch zo doen in plaats van de If...Then...Else...Endif structuur:
Code:
    .zoeken.Enabled = Iif(IsNull(.straat), False, True)
    .afdruk.Enabled = Iif(IsNull(.test), True, False)
 
Laatst bewerkt:
probleem opgelost

allen dank voor de aangedragen code,s

het werkt nu precies zoals ik graag wilde...super

ben nog wel benieuwd waarom het bij een "los'' tekst vak wel wil en bij een veld gebaseerd op een tabel niet...
misschien kan iemand daar nog een antwoord op geven.
 
Als je de juiste techniek gebruikt, werkt je eigen oplossing prima.

Code:
Private Sub straat_Change()
    If Me.straat.Text & "" = vbNullString Then
        Me.zoeken.Visible = False
    Else
        Me.zoeken.Visible = True
    End If
End Sub

Code:
Private Sub test_AfterUpdate()
    If Me.test & "" = vbNullString Then
        Me.afdruk.Visible = False
    Else
        Me.afdruk.Visible = True
    End If
End Sub
Het 'probleem' tussen een gebonden tekstvak en een niet-gebonden tekstvak is heel simpel te verklaren; bij het openen van een record (en bladeren) kijkt Access naar de waarden in de velden. Bij gebonden velden worden die waarden gevuld vanuit de tabel, niet-gebonden tekstvakken zijn leeg. Je moet gebonden tekstvakken dus controleren bij het bladeren. En wel zo:

Code:
Private Sub Form_Current()
    If Me.straat & "" = vbNullString Then
        Me.zoeken.Visible = False
    Else
        Me.zoeken.Visible = True
    End If
End Sub

Dit is dus in jouw geval (bijna) dezelfde code als bij het tekstvak.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan