Confirmatie bij wijzigen gegevens

Status
Niet open voor verdere reacties.

snabbi

Gebruiker
Lid geworden
30 jun 2005
Berichten
287
Ik heb een beetje proberen te zoeken via google en de Zoeken knop hier, maar zag zo snel geen antwoord.

Wat ik heb is een formulier. En omdat het formulier door anderen gebruikt gaan worden, wil ik er zeker van zijn dat wanneer ze iets veranderen dat ze dat niet per ongeluk doen. Lekker veel confirmatieschermen dus.

Wat ik wil is dat ze een scherm krijgen wanneer ze een waarde aanpassen en dat dan ook de oude waarde in de melding staat. Dit omdat het me wel lukt om een confirmatiescherm te krijgen, maar niet meer terug kan zetten naar de oude waarde.

Dit is de VBA code voor het confirmatiescherm (als het via een reguliere operatie kan in access is het ook prima)

Private Sub Aantal_BeforeUpdate(Cancel As Integer)
Dim updRecord As Byte
updRecord = MsgBox("Weet je zeker dat je dit wil veranderen.", vbOKCancel, "Record Modificatie")
If updRecord = vbCancel Then
Cancel = True
End If
End Sub
 
En als je toch eens wist hoe simpel of dat is......

De vorige waarde wordt opgeslagen in de eigenschap OldValue van een control op je formulier.

Die waarde kun je uitlezen in de BeforeUpdate methode met behulp van me.<ctrlNaam>.OldValue

<ctrlNaam> is dan de naam van het control op je formulier (het veld of de combobox etc).
 
Ik ben een beetje aan de gang gegaan met vba en met normale expressies. Ik denk dat ik begrijp wat je bedoelt. Ik denk dat ik voor elk veld op mijn form een backup moet maken en ik kan naar die backup waarde wijzen?

Is er misschien nog een andere manier, daar ik ook nog subforms gebruik en 15 velden op mijn normale form.
 
Nee, je hoeft geen backup te maken, dat doet access voor je.
De oude waarde wordt opgeslagen in de property OldValue van het object op je formulier.
Het is echt heel simpel, kijk maar in het voorbeeldje dat ik gemaakt heb.
Het voorbeeld is op veldniveau.

Op recordniveau is het veel complexer. Het kan wel, maar dan moet je gebruik gaan maken van de recordset clone van het formulier. Dat wordt redelijk complex programmeer werk.
 

Bijlagen

Laatst bewerkt:
Thnx dit doet het goed ja. Ik zat specifiek in elk veld te kijken om daar een me.oldvalue te krijgen in plaats van de oldvalue te zoeken in de me.naam.oldvalue.

Thnx het werkt goed.
 
In dit kader nog een aanvullende vraag mbt OldValue. In een database worden verslagen gemaakt in een Memoveld. Enkele keren per jaar word ik gebeld dat men na 1,5 uur typen per ongeluk op een verkeerde knop drukt en het hele verhaal weg is. De slimmerik drukt dan op de Esc toets. De rest belt mij. Kan ik dit veld ook op deze manier beveiligen of heeft dat geen zin omdat hetgene dat men getypt heeft nog niet is opgeslagen in de OldValue?
 
Je geeft het antwoord zelf al.
In de eigenschap oldvalue wordt de waarde vastgehouden die het veld had voordat het gewijzigd werd.
Typen in een veld is een wijziging, dus alleen datgene wat erin stond voordat met typen begonnen wordt staat dus in de eigenschap OldValue.

Het is overigens geen beveiliging. OldValue is simpel een eigenschap van een object, iets dat access gewoon in zich heeft en waarvan je gebruik kunt maken in VBA code.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan