button activeren onder voorwaarde

Status
Niet open voor verdere reacties.

Ruudh59

Gebruiker
Lid geworden
30 nov 2013
Berichten
56
Ik wil iets dat in een eerdere versie van Access geen probleem was, maar ik niet voor elkaar krijg in Access 2010.
Iets heel eenvoudigs lijkt me: "afhankelijk van of een veld op een formulier is ingevuld een button activeren"

In vorige versies van access maakte ik een macro achter een gebeurtenis met de actie 'waarde instellen'.
De gebeurtenis is het besturingselement dat gewijzigd is. De actie is het instellen van de waarde van de button naar 'active' onder voorwaarde dat bij het gewijzigde besturingselement iets is ingevuld.
Bij access 2010 bestaat de actie 'waarde instellen' niet meer, maar is volgens mij dan de actie 'eigenschap instellen' het equivalent.
Dat wil echter niet werken, maar wat daaraan mis gaat weet ik niet, want je krijgt er geen fout op.

Ik heb het ook geprobeerd met VBA:

Private Sub [veldnaam op formulier]_Dirty(Cancel As Integer)
If Me![veldnaam op formulier] <> Null Then
Me![buttonnaam].Enabled = True
Else
Me![buttonnaam].Enabled = False
End If
End Sub

Dat werkt ook niet.
Kan iemand mij helpen?
 
Waarom de Dirty event? Je kunt beter AfterUpdate gebruiken, gezien je opmerking
"afhankelijk van of een veld op een formulier is ingevuld een button activeren"
En dat trigger je bij het verlaten van het veld met de gebeurtenis <Na bijwerken>.
Code:
If Not Me.txtVeldnaam = vbNullString Then
    Me.Buttonnaam.Enabled = True
Else
    Me.Buttonnaam.Enabled = False
End If
 
Bedankt OctaFish voor je reactie.
Het lag niet aan de code, maar aan de trigger.
Ik weet nog steeds niet waar het probleem zit, want het werkt in beide gevallen (na bijwerken of na wijzigen) niet.
Ik heb de code nu toegevoegd aan een procedure die het betreffende veld vult en daarmee is het op een andere wijze wel gelukt.
Hiermee kan dit naar opgelost.
 
Ik heb de code nu toegevoegd aan een procedure die het betreffende veld vult en daarmee is het op een andere wijze wel gelukt.
de gebeurtenissen <Bij wijzigen> en <Na bijwerken> reageren op een handeling van de gebruiker. Vul je een veld vanuit een procedure, dan triggert er dus niks. En gebeurt er niks.
 
Michel,

Dat verklaart een hoop.

Overigens vind ik het wel vreemd. Het gaat om velden op een formulier. Bij een wijziging is er altijd sprake van een handeling van een gebruiker. Bij een veld dat letterlijk door een gebruiker wordt gewijzigd wordt evt. een trigger gedetecteerd, maar bij velden die t.g.v. de wijziging d.m.v. een procedure daarmee ook wijzigen is er geen sprake van een trigger. Waarom dat onderscheid?
Het is niet logisch, maar als dat zo is dan is het goed om dit te weten.

Nogmaals bedankt.
 
Het gaat om velden op een formulier. Bij een wijziging is er altijd sprake van een handeling van een gebruiker.
Nee dus. Als je middels VBA de inhoud van een veld verandert, komt daar geen mensenhand aan te pas. En dus wordt de 'handeling' niet als activiteit getriggerd. Als je dus velden vult vanuit een ander tekstvak met VBA, en als resultaat daarvan zijn de waarden in een ander tekstvak zodanig veranderd dat (zoals in jouw geval) er knoppen moeten worden aangepast, dan is het ook veel logischer om alle acties op één gebeurtenis te zetten, zoals je nu hebt gedaan. Al was het maar omdat het ook helemaal niet logisch is om de handelingen op te splitsen over verschillende objeccten. Je weet immers al (op basis van de waarden die je net hebt aangepast) dat de knoppen moeten worden aangepast. Dus een kettingreactie oproepen heeft dan weinig nut.
Had je de procedure in je oorspronkelijke vraag goed omschreven, dan had ik dat ook als antwoord gegeven ;)
 
Het wordt een beetje een academische discussie, maar ik wilde een functionele afhankelijkheid implementeren: het activeren van de knop is afhankelijk van de waarde van een veld. En niet afhankelijk van de handeling waardoor het veld is gewijzigd. Ik moet de functionele afhankelijkheid nu anders implementeren, omdat Access dat technisch niet toelaat. Ik begrijp ook niet waarom een veld op een formulier alleen als gewijzigd wordt gezien als daar een mensenhand aan te pas is gekomen. Dat onderscheid heeft totaal geen nut.
Maar ik weet nu hoe het werkt, dus ik houd daar voortaan rekening mee.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan