record vergrendelen na afdrukken

Status
Niet open voor verdere reacties.

Jake65

Gebruiker
Lid geworden
7 feb 2022
Berichten
12
Goedemiddag,

In een Access formulier druk ik records af via een rapport.
Nu wil ik de afgedrukte records vergrendelen zoadat deze niet meer per ongeluk gewijzigd kunnen worden.
Ik wil wel de mogelijkheid inbouwen om een vergrendeld record toch weer aan te kunnen passen (met bijv. een knop "wijzigen")

Ik hoop dat iemand mij kan helpen.

NB: Het kan zijn dat ik dit naar een aantal mensen als privebericht gestuurd heb.
Ik zat in de verkeerde omgeving, excuses hiervoor.

Mvg Jacques
 
Nu wil ik de afgedrukte records vergrendelen zoadat deze niet meer per ongeluk gewijzigd kunnen worden.
Dat is in principe onmogelijk, en moet je ook niet willen. Als je gebruikers op een bepaalde manier met een database wilt laten werken (zoals dus records muteren t/m afdrukken) dan zou je in de tabel een extra boolean veld (selectievakje) kunnen opnemen dat aangezet wordt op het moment dat een record is afgedrukt. Dat verdwijnt dan uit de lijst met muteerbare records, als de bron wordt gefilterd op records met een niet-aangevinkt veld. Andere mogelijkheid: je kunt bij het bladeren door de records de optie om afgedrukte records te bewerken uitzetten, en bij niet-afgedrukte records wél toestaan.

Als je bepaalde mensen rechten wilt geven op het muteren van reeds afgedrukte records, dan moet je een inlogsysteem inrichten waarbij een groep alleen mag muteren t/m afdrukken, en de 'beheerder(s)' een extra knop hebben op het formulier waarmee ze de beveiliging uit kunnen zetten. Daarbij moet het systeem dan voldoende zijn dichtgetimmerd dat gebruikers geen handelingen kunnen uitvoeren die niet in hun rechtenportefeuille zitten, zoals formulieren aanpassen, of, nog erger, rechtstreeks in een tabel rotzooien. Want dat laatste is natuurlijk dodelijk voor jouw beveiliging :).
 
Goedemiddag Octafish,

Dat selectievakje had ik er al in staan.
De vraag is nu hoe ik dat aangevinkt krijg als het rapport voor een bepaald record is afgedrukt.

Bedankt voor het meedenken
 
Dat selectievakje had ik er al in staan.
Dat had je niet verteld :). Er vanuit gaande (je weet het vast wel: met beperkte informatie kunnen we maar beperkte help geven) dat je een formulier gebruikt om één record af te drukken, en dat je VBA gebruikt om dat te doen, is het relatief simpel. Via de knop geef je de afdrukopdracht, en in dezelfde code zit dan de opdracht waarmee je AllowEdits aan of uit zet. Op het formulier krijg je dan zoiets:


Code:
Private Sub Form_Current()
    Me.AllowEdits = (Me.chkAfgedrukt.Value = False)
End Sub

Dit is de algemene code waarmee je voorkomt dat een formulier bewerkt kan worden als het vinkje is aangevinkt. Elke keer als je een volgend record selecteert, wordt gekeken of het vinkje aan of uit staat, en op basis daarvan wordt AllowEdits dan aangezet of niet.
En voor het aanzetten van het vinkje:
Code:
Private cmdAfdrukken_Click()
    'Code om het rapport af te drukken
    With Me
        .chkAfgedrukt = True
        .AllowEdits = False
    End With
End Sub
En dat is het wel ongeveer.
 
OctaFish,

Bedankt voor je snelle reactie(s)
Ik heb je code verwerkt, en dat loopt zoals het moet
Nu heb ik nog een knop "wijzigen" toegevoegd, die het mogelijk maakt om het record alsnog te bewerken.
Het kan namelijk voorkomen dat het record werd afgedrukt terwijl niet aale informatie correct was ingevuld.

Code achter de knop:

Private Sub Wijzigen_Click()

With Me
.T2L_Afgedrukt.value = False
.AllowEdits = True
End With

End Sub

Ook dit werkt naar behoren.
Maar; als ik het record nu weer afdruk, dan blijft het mogelijk om wijzigingen in het record te maken. Het selectievakke wordt wel weer aangevinkt.
Pas als ik een volgend record kies en weer terugga, is wijzigen niet meer mogelijk.
Ik hoop dat je hier iets mee kunt.

Groeten, Jacques
 
Een formulier heeft een andere status als een tabel; je zult het record dus wel moeten opslaan, bijvoorbeeld door de status van het formulier aan te passen. Voeg deze regel eens toe als laatste:
Code:
     me.Dirty = False
 
Goedemorgen,

Dit was precies het ontbrekende stukje.
Het werkt als een zonnetje.

Bedankt Michel :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan