Invoer formulieren vastleggen

Status
Niet open voor verdere reacties.

sophierve

Gebruiker
Lid geworden
11 sep 2009
Berichten
42
Hallo,

Ik vroeg mij af of het mogelijk is om bepaalde velden in een formulier vast te leggen, d.w.z. nadat ze zijn ingevuld ze niet meer veranderd kunnen worden? Ik weet dat je bij de velden aan kunt geven : ´locked´ (ik heb engelstalige access), maar dit is niet precies wat ik wil aangezien je dan ook geen nieuwe invoer meer kunt ingeven.

Ik zou graag willen dat de velden ingevoerd worden, en daarna vastgelegd worden zodat ze niet nog per ongeluk veranderd kunnen worden, maar dat nieuwe invoer nog gewoon mogelijk is.

Ik hoop dat mijn vraag duidelijk is en dat iemand mij hierbij kan helpen!

Groetjes
 
Het is me volgens mij wel duidelijk...
Je wilt gegevens op een formulier vastzetten, maar ook weer vrij kunnen geven.

Ik heb even een voorbeeldje gemaakt met de volgende mogelijkheden:
- Met een knop het veld vrijgeven.
- Met een dubbelklik gebeurtenis het veld vrijgeven.

Als je 1 veldje wilt vrijgeven is de knop wel handig.
Als je meer dan 1 veldje wilt vrijgeven is de dubbelklik handig.
 

Bijlagen

Sorry voor de late reactie..In ieder geval al bedankt. ik heb echter nog een vraag (Ik ben nog maar een beginner in Access):

Deze manier werkt inderdaad, maar is het mogelijk om het hele formulier in eenmaal te blokkeren na een update i.p.v. elk veld apart? Er zijn dan nog 3 mogelijke velden over die weer ´open´ moeten kunnen (oftewel veranderd moeten kunnen worden), waar ik graag de ´dubbel klik´methode voor wil gebruiken.

Alvast erg bedankt!
 
Ik heb even een voorbeeldje gemaakt waar in een tabel wordt bijgehouden of de gegevens gelocked zijn. Dit is handig in jouw geval:
-Je houdt bij welke velden (in dit geval alle) op het formulier gelocked zijn.
-Je hoeft niet bij elk object een gebeurtenis (event) AfterUpdate in te stellen.

In VBA zijn de volgende events wel van belang:
- Form_Current() - hierdoor kan je bijvoorbeeld wel een nieuwe record toevoegen. Zonder dit -> is alles gelocked.
- OpslaanKnop_Click - hiermee wordt de record opgeslagen en worden de velden gelocked.

De knop sleutel is wederom optioneel, hiermee ontgrendel je alle velden in 1 x.
Je kunt ook individueel op alle velden dubbelklikken.

Let wel: hij locked alleen als je op Opslaan klikt.
Je kunt het waterdicht maken door het formulier te sluiten (DoCmd.Close) en terug te gaan naar het schakelbord, geen navigatieknoppen etc. Of toch een AfterUpdate zetten bij de 3 tekstvakken.

Een andere mogelijkheid is bijvoorbeeld alleen bij het laatste tekstvak een AfterUpdate zetten die alledrie de velden locked.. Maar ja, dan moet het laatste tekstvak wel weer verplicht zijn om in te vullen.

Hopelijk helpt dit jou een beetje!
 

Bijlagen

Hai,

Ontzettend bedankt voor je tijd en moeite, en het lijkt inderaad te werken..helaas nog niet optimaal..dus heel misschien heb je hier ook een oplossing voor :)

Ik werk in de Engelstalige versie, en zowel bij de ´opslaanknop´ als de ´knopsleutel´ accepteert hij de Me.Gesloten=False niet. Ik heb dit daarom veranderd in Me.CloseButton=False , maar dan krijg ik de onderstaande error:

Run-time error = 2448 (You can´t assign a value to this object).

Als ik dan op ´End´ druk, werkt het alsnog naar behoren, als ik op `Debug´ druk wordt de Me.CloseButton regel in geel weergegeven..Natuurlijk zou ik graag willen dat het werkt zonder de error message.

Alvast bedankt wederom!
 
De Me.Gesloten=False is de waarde in de tabel zetten op False.
Kortom het vinkje weghalen bij Gesloten in de tabel1.
Gesloten wordt ook geladen in het formulier, alleen niet weergegeven.

Wat je kunt doen:
- zet het veld gesloten even in het formulier
- kijk naar de naam van deze checkbox
- verwijder de checkbox
- vul nu de naam in VBA ipv Gesloten -> Me.naam=False

Een knop op false zetten, heeft weinig nut.
En zoals je gemerkt hebt -> dit kan ook niet! ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan