Met een selectievakje het hele formulier ver- en ontgrendelen

Status
Niet open voor verdere reacties.

marieke1994

Gebruiker
Lid geworden
31 mrt 2014
Berichten
23
Beste allemaal,

ik ben al enige tijd aan het proberen om met een druk op de knop mijn formulier te ver- en ook weer te ontgrendelen (dus ingeschakeld = bewerken en uitgeschakeld = alleen-lezen).
Het zit zo, ik heb een aantal formulieren waarin je informatie kunt verwerken door ja/nee-knoppen. Nu komt het snel voor dat je per ongeluk zo'n vakje aanklikt zodat hij het antwoord verandert in 'ja', terwijl het 'nee' had moeten blijven. Hier gaan geheid fouten mee worden gemaakt. Nu wilde ik met een nieuw selectievakje het hele formulier als het vergrendelen (zodat je niks meer kunt veranderen/aanpassen etc) om vervolgens als je hem aanklikt te ontgrendelen (en misschien is het dan een idee dat er een waarschuwingsvenster tevoorschijn komt met de mededeling dat je nu de info kunt bewerken/toevoegen). Ik heb dit geprobeerd met macro's, maar kom hier tot dusver niet uit. Kan iemand mij dit stap voor stap uitleggen??

Alvast bedankt!!
 
Dat gaat je met een selectievakje niet lukken, want als de modus op Niet bewerken staat, kun je het selectievakje ook niet meer aanklikken. De status is dan alleen maar uit te zetten, op het moment dat je tenminste begint in een bewerkbaar formulier. Dus dat schiet niet op :). Beter is het om een knop te maken voor de switch.
Code:
Private Sub Knop19_Click()
    With Me
        .AllowAdditions = Not Nz(Me.chkBewerken)
        .AllowDeletions = Not Nz(Me.chkBewerken)
        .AllowEdits = Not Nz(Me.chkBewerken)
        .chkBewerken = Not Nz(.chkBewerken)
        .Refresh
    End With
End Sub
 
Oooohja, daar heb je gelijk in! En waar moet ik die code dan invoeren (ik heb nog nooit met vba gewerkt..:confused:)?
 
Dacht al dat ik een stapje te weinig had aangegeven :).
Als je een knop maakt, kun je daarna gelijk op <Annuleren> klikken om de wizard af te sluiten. De code kun je namelijk probleemloos kopiëren. Je hebt dan, als het goed is, een niet-werkende knop op je formulier. Daarvan ga je naar de <Eigenschappen>, tabblad <Gebeurtenissen> en dan pak je de regel <Bij klikken>. Als je die selecteert, krijg je een knop met 3 puntjes waar je dan op klikt. Kies vervolgens <Gebeurtenis>. Je komt nu in het VBA venster. Daar plak je alle code uit bericht #2 vanaf de regel With Me t/m End with. Als het goed is staan de eerste en laatste regel (Private Sub en End Sub) er namelijk al, en jou knop zal vast anders heten.
Enige voorwaarde is nog: op je formulier moet je een selectieveld hebben met de naam chkBewerken. Want die heb ik ook gebruikt. Als je alles op die manier hebt gedaan, kun je met <Alt>+<F11> weer terugswitchen naar je formulier, en dan kun je hem uitproberen.
 
Jaa zo is het duidelijk!! Nog een dingetje: wat bedoel je met een selectieveld met de naam chkBewerken? Of hoe moet ik dat maken?
 
Je hebt vast al een keer een selectievakje op een formulier gezet, en anders wordt dit de eerste keer :). In dat geval: bij <Ontwerpen> vind je in de groep <Besturingselementen> een knop voor het selectievakje. Die klik je aan, en vervolgens plaats je dat op je formulier. Standaard krijgt dat de naam Selectievakje# waarbij # een getal voorstelt. Dat is niet handig, want dan weet je nooit wat het ding doet. Dus via <Eigenschappen>, tabblad <Overige> kun je in de regel <Naam> het ding een fatsoenlijke naam geven. Ik gebruik dus chkBewerken in de code. En dat moet jij ook doen. Of je moet de code aanpassen naar de naam die je wél wilt gebruiken, dat mag natuurlijk ook.
 
Ik weet echt niet wat ik fout doe, maar het werkt niet zoals het moet.. Er staat nu een knop en een selectievak in mijn formulier (het is overigens een hoofdformulier met meerdere subformulieren, maar ik volgens mij maakt dat niet zoveel uit..) waarbij het selectievak chkBewerken heet en de knop bij klikken die code van jou heeft.
 
Kan er een fout zitten in de code, want ik heb het allemaal 3x opnieuw geprobeerd (ook in een andere database) maar hij doet het echt niet..
 
Ik zou zeggen: probeer een voorbeeldje mee te posten want op basis van je gegevens wordt het lastig om te zien wat er dan fout gaat. Al werkt het beveiligen alleen op het actieve formulier, niet op subformulieren. Daar moet je de code nog voor aanpassen.
 
Als ik het bestand probeer te uploaden op het forum krijg ik een foutmelding. Is er een mogelijkheid dat ik hem naar je kan mailen?
 
Iets later geworden als'vanmiddag', maar dan moet ik ook maar niet gaan werken ;)
Je hebt één subformulier in je voorbeeldje, maar ik vermoed dat je de code wel kunt aanpassen voor de overige subformulieren.
Code:
    With Me!subBespreking.Form
        .AllowAdditions = Not Nz(Me.chkBewerken)
        .AllowDeletions = Not Nz(Me.chkBewerken)
        .AllowEdits = Not Nz(Me.chkBewerken)
        .Refresh
    End With
    With Me
        .AllowAdditions = Not Nz(Me.chkBewerken)
        .AllowDeletions = Not Nz(Me.chkBewerken)
        .AllowEdits = Not Nz(Me.chkBewerken)
        .chkBewerken = Not Nz(.chkBewerken)
        .Refresh
    End With
Feitenlijk komt het er op neer dat je voor elk subformulier een eigen With .. End With maakt waarin je de eigenschappen instelt. Die code kun je verder kopiëren. Alleen de eerste regel (With Me!... ) is uniek.
 
Oke, ik snap wat je zegt, maar het probleem is dat de die knop die ik in [Intake] heb gemaakt ook niet werkt. Heb bovenstaande code nu verwerkt in [Bespreking]
en dan doet ie het ook niet (kun je ook wel zin in de voorbeeld database die ik je heb gestuurd..)
 
Da's gek, want jouw knop doet het bij mij wel! En op basis daarvan heb ik dus de code toegevoegd om het subformulier te locken. Wél heb ik de knop van het tabblad afgehaald, en er boven gezet. Maar dat mag eigenlijk niet uitmaken.
 
Kan het niet gewoon met een OnChange op het selectievakje ?
 
Het probleem zit 'm niet in de actie. Overigens heb ik in bericht #2 al uitgelegd waarom dat niet gaat werken :).
 
Niet zoals hij het wil nee, dat klopt.
Maar als je kijkt of het selectievakje wijzigt in ja, dat je dan een melding krijgt of je dat wel wilt ?
Dat geldt dan per selectievakje en hoef je niet het hele vformulier te blokken.

Of zit ik er gewoon naast ?
 
Ze wil het hele formulier blokkeren, en dat werkt dan uiteraard op alle objecten op het formulier. Je kunt dan niet met een selectievakje werken, omdat je dat dan ook uitschakelt. Vandaar de knop.
@Marieke: Ik heb een werkend voorbeeldje bijgevoegd, dat werkt wellicht wat makkelijker voor je.
 

Bijlagen

  • voorbeeldje.rar
    34,7 KB · Weergaven: 45
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan