Wijzigingen loggen

Status
Niet open voor verdere reacties.

maomanna

Gebruiker
Lid geworden
20 feb 2014
Berichten
234
De wijzigingen die doorgevoerd worden in records wil ik loggen en heb daarvoor 1 tabel met 4 kolommen.

Kolommen:
- ID
- Timestamp
- UserName
- Activity

In mijn globals heb ik de onderstaande functie

Code:
Public Sub Logging(Activity As String)
    CurrentDb.Execute "INSERT INTO tblActivityLog (UserName, Activity) Values('" & TempVars("UserName").Value & "', '" & Activity & "')"
End Sub

Op elk formulier de code:
Code:
Private Sub Form_Load()
    Globals.Logging "Naam formulier - openen"
End Sub

en bij het klikken van de knop sluiten

Code:
Private Sub KnpSluiten_Click()
On Error GoTo Err_KnpSluiten_Click

    Globals.Logging "Naam formulier - sluiten"

    If Me.Dirty Then Me.Dirty = False
    DoCmd.Close

Exit_KnpSluiten_Click:
    Exit Sub

Err_KnpSluiten_Click:
    MsgBox Err.Description
    Resume Exit_KnpSluiten_Click
    
End Sub

Dat werkt super, maar nu wil ik meer informatie opslaan in het veld Activity.
Bij openen moet hij de huidige waarde uitlezen en bij sluiten de aangepaste waarde opslaan.
Code:
Private Sub Form_Load()
    Globals.Logging ("Naam formulier - Openen - Beginwaarden: Me.veldnaam , Me.Veldnaam etc etc")
End Sub

Code:
Private Sub KnpSluiten_Click()
On Error GoTo Err_KnpSluiten_Click
Globals.Logging ("Naam formulier - Sluiten - Aangepast: Me.veldnaam , Me.Veldnaam etc etc")

    If Me.Dirty Then Me.Dirty = False
    DoCmd.Close

Exit_KnpSluiten_Click:
    Exit Sub

Err_KnpSluiten_Click:
    MsgBox Err.Description
    Resume Exit_KnpSluiten_Click
    
End Sub

Waarschijnlijk denk ik te eenvoudig, want het werkt niet.

Hoe kan ik dit werkend krijgen?
 
Ik zou het zelf zo nooit doen, want dit is niet echt meer een logtabel. Je moet dan namelijk een bestaand record in je log gaan bewerken, dus er een Update van maken i.p.v. een Insert. En wat doe je dan met je Timestamp?
Je moet dus eerst controleren of het record al bestaat; zo niet: Insert uitvoeren. Anders: Record opzoeken (op basis van User en datum wellicht) en bijwerken.
Slecht idee, als je het mij vraagt; gewoon elke actie loggen. :).
 
Hij logt nu ook elke handeling. Het openen logt ie apart, het sluiten logt hij.

rwFImOs.png

Bij elk vinkje in de AfterUpdate() dat plaatsen. dat hij per vinkje dat logt.

Maar dat gaat dusdanig veel loggings opleveren, dat ik het liever in 1 regel zou willen zetten door de status bij openen te loggen + wat er in het record staat en bij sluiten wat er dan staat.
Dan kan je dat later altijd handmatig nakijken.

Met Timestamp log ik het tijdstip van afsluiten.
Wat ik er later mee ga doen weet ik nog niet.
 
Laatst bewerkt:
Tja, een log is een log. Persoonlijk zie ik het nut niet van het ellenlang vasthouden van logdata, dus ik bewaar een log een maand of zo, en dan gaat de oude data naar een historie database. De logtabel zelf blijft dan behapbaar en je kunt altijd nog in de historie tabel kijken als het echt moet.
 
Dat klinkt inderdaad als een erg goede oplossing.

Daar ga ik eens naar zoeken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan