I have a DB where I want to create an audit trail. I found some code on this site posted by Bob Stubbs. It works where I have a form and if a field gets changed, it writes to the table. However, I am having trouble getting it to work for more than one field. If 2 or more fields get changed, I want them all to be written to the audit table. I think the problem is with my If statement. Once it gets to a true value, it stops there. Instead of having this on the forms before update event, should I have each If statment on each fields before update event?
Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If lastname.OldValue <> lastname Then
strResult = WriteAuditRecord("EmployeeData", "LastName", PersonnelNo, lastname.OldValue, lastname)
ElseIf firstname.OldValue <> firstname Then
strResult = WriteAuditRecord("EmployeeData", "FirstName", PersonnelNo, firstname.OldValue, firstname)
ElseIf Employeegrp.OldValue <> Employeegrp Then
strResult = WriteAuditRecord("EmployeeData", "Employeegrp", PersonnelNo, Employeegrp.OldValue, Employeegrp)
ElseIf Status.OldValue <> Status Then
strResult = WriteAuditRecord("EmployeeData", "Status", PersonnelNo, Status.OldValue, Status)
ElseIf Eesubgroup.OldValue <> Eesubgroup Then
strResult = WriteAuditRecord("EmployeeData", "Eesubgroup", PersonnelNo, Eesubgroup.OldValue, Eesubgroup)
ElseIf Position.OldValue <> Position Then
strResult = WriteAuditRecord("EmployeeData", "Position", PersonnelNo, Position.OldValue, Position)
ElseIf JobTitle.OldValue <> JobTitle Then
strResult = WriteAuditRecord("EmployeeData", "JobTitle", PersonnelNo, JobTitle.OldValue, JobTitle)
End If
End Sub