Worsteling met Ja/Nee veld, bij klikken.

Status
Niet open voor verdere reacties.

RadboudAKF

Gebruiker
Lid geworden
3 nov 2010
Berichten
219
Ik worstel met een Ja/Nee veld.

Ik heb een vba-scriptje gemaakt dat een aantal acties uitvoert als de waarde bij Klikken "TRUE" wordt. (er wordt bv,. een nieuw record aangemaakt, al deze goederen zijn ontvangen wordt er automatisch een nieuwe bestelling geplaatst)

VBA begint dan met:

If Me.Ontvangen= -1 Then (de waarde wordt "Ja" na mijn "KLIK" ) en scriptje wordt verder uitgevoerd.

Als dus Ná Klikken de waarde op "JA" staat wil ik voor dit specifieke record dat er niet meer op dit veld (voor dit record) kan worden geklikt. De waarde kan niet meer worden veranderd naar "NEE" -de goederen zijn ontvangen en dat moet niet meer ongedaan worden gemaakt. (dus eenmaal op Ja, geen wijziging meer mogelijk)

Binnen het bestaande scriptje krijg ik het niet voor elkaar. En ook niet met andere gebeurtenissen. Ik probeerde "voor bijwerken" , "na bijwerken", "bij focus". En eigenlijk wil ik het binnen mijn bestaande vba-subje willen regelen.

Welke denkfout maak ik hier? Wie zet me even 'op het goede pad' ?

Voorbaat dank...

Jan Stegeman
 
Het is volgens mij wel op te lossen door de eigenschappen van het selectievakje aan te passen. Dus aan het einde van de procedure 1 of2 regels toevoegen:
Code:
     Me.Ontvangen.Enabled = False
     Me.Ontvangen.Locked = True
Je kunt ook volstaan met één van de regels; je verandert dan wel het uiterlijk van het selectievakje. Met deze 2 regels blijft de opmaak ongewijzigd.
 
verhuis van veld bij onfocus

In het veld ja/neen

Private Subontvangen_GotFocus()
If Me!ontvangen = -1 Then
Forms!(ander veld).SetFocus
End If

End Sub
 
Beste Octafish,

Mooi dat je ook op zondag posts plaatst !!

1. Ik heb dit zelf ook al bedacht....maar dan zijn toch binnen alle records op het formulier dit Ja/Nee veld geblokkeerd? Of alleen dit ene specifieke record, waarvan de waarde nu TRUE is geworden. (dan heb ik iets verkeerd gedaan)

2.

Ik aarzel ook om bij dit Ja/Nee veld de gebeurtenis on-Click te gebruiken, omdat ik niet precies begrijp of dan de Klik die de waarde verandert van Nee naar Ja of van Ja naar Nee al "in de gebeurtenis" zit.

Ik bedoel:

If Me.Ontvangen= -1 (wordt deze waarde TRUE (-1) gezien Na klikken of vóór klikken???

Jan
 
Hallo,

ik heb de oplossing van deLaRuelleDanny gekozen ... en dat lijkt de beste oplossing te zijn.

Mag ik u hartelijk danken?

Schaam mij een beetje dat ik er zelf niet ben opgekomen ... de oplossing is simpel en effectief.

Nogmaals dank.

Jan
 
ik heb de oplossing van deLaRuelleDanny gekozen ... en dat lijkt de beste oplossing te zijn.
Vind je? Ik namelijk niet :). Het klopt dat je het selectievakje uitschakelt voor het verdere gebruik van het formulier. Je moet dan ook de status van het veld checken bij de gebeurtenis <Bij aanwijzen> om het veld weer aan- of uit te zetten. Krijg je een extra gebeurtenis dus, als je die nog niet had.
Code:
Private Sub Form_Current()
    If Me.Ontvangen = True Then
        Me.Ontvangen.Enabled = Not Me.Ontvangen
        Me.Ontvangen.Lockec = Me.Ontvangen
    End If
End Sub
En daarmee check je dus voor elk record of het vinkje aan- of uit staat. In het laatste geval kun je er op klikken en start de gebeurtenis (die hem dan ook weer uit zet), in het eerste geval is hij uitgeschakeld.
Maar pak vooral de methode waar jij je gelukkig bij voelt :).
 
beste

wat gebeurd er als je eenmaal in de form zit en dit allemaal heb nagekeken en je dan naar next record gaat (zonder de form te verlaten) ?
 
Dan trigger je de gebeurtenis Form_Current. Daarom zet ik dáár dus code die ervoor moet zorgen dat een volgend of vorig record gecontroleerd wordt op instellingen voordat de gebruiker iets kan doen.
 
dat vereenvoudigd de zaak,

mijn ervaring was dat ik nog een stap eerder eigenlijk de opdrachten moest uitvoeren en dan moest ik het doen vanuit eender welke hoek;
maw de code in de cmdnext, de code in cmdprevious , de code in .......

Ik zal er eens op letten
 
Octafish,

Ik heb nog eens naar jouw oplossing gekeken en die inderdaad ook prima....ga nu weer twijfelen of ik wel de juiste oplossing kies. Voorzie nog niet de nadelen van de 'setFocus' oplossing. Oplossing met het locked veld lijkt minder gekunsteld.

Zal de vraag in ieder geval op opgelost zetten.

Nogmaals dank,

Jan
 
Octafish,

De SetFocus optie is inderdaad niet optimaal; zeg maar NIET goed. Je hebt dus helemaal gelijk.

Het vervelende is echter dat ik jouw oplossing ook niet weet toe te passen omdat ik bij mijn Ja/Nee -veldje geen Gebeurtenis BIJ AANWIJZEN kan vinden. Waarom dat zo is....weet ik niet.

Private Sub Form_Current()

If Me.Ontvangen = True Then
Me.Ontvangen.Enabled = Not Me.Ontvangen
Me.Ontvangen.Lockec = Me.Ontvangen
End If

End Sub
 
De code is ook bedoeld voor het formulier. Niet voor een object op dat formulier. En hij triggert bij het bladeren door de records. Exact het moment dus waarop je wilt dat de controls opnieuw word ingesteld.
 
Octafish,

Dank je ... dat had ik even over het hoofd gezien.

Ik moet zeggen dat ik dit alles steeds leuker ga vinden, mede door jouw ACCESS-cursus. Ik heb me in het verleden teveel vastgehouden aan (durf het bijna niet te zeggen) Macro's. Door jouw aanwijzingen, jouw opmerkingen en jouw weerzin tegen macro's (dat ik nu eindelijk ook écht begrijp) heb ik nu dan eindelijk het licht gezien. Wat een paar simpele aanwijzingen en aansporingen (en in mijn geval ook nog een pracht online-cursus VBA) al niet vermag.

Dank daarvoor ....

RadboudAKF
aka Jan
 
en het einde is nog niet in zicht, kan altijd beter :)

Stel nu eens dat iemand met een cheque betaald en je ter goeder trouw ingeeft dat het betaald is en de cheque blijkt niet gedekt.

Access houd nooit op .....

Danny
 
Stel nu eens dat iemand met een cheque betaald en je ter goeder trouw ingeeft dat het betaald is en de cheque blijkt niet gedekt.
Wat heeft dat met Access te maken? Ik drink duidelijk de verkeerde drankjes :).
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan