Hi again, This might be a simple answer, but I have tried several event properties, the last in the OnCurrent of the main Form. But most of the calcs work most of the time, and occassionally I get an 'Error 2001'. I have a couple of years VBAing, so still a teenager?? I am curious as to wether I am placing the calcs in the right event. I really only want them to do the calcs when the leave tab is selected (see enclosed image) and/or if a new employee record is navigated to. I will also attach code of calcs. If it needs to go into the Tab control what is the best event?
NB pink fields on form are visible=No and for troubleshooting
Coding:
' Run Calcs here for Leave other than Sick Leave.
If IsNull(EmpStartDate) Then
DaysWorked = 0
Else
DaysWorked = DateDiff("d", EmpStartDate, Now)
End If
' Calc number of days between Employee Start Date and Now
TotalLeaveAlloc = DaysWorked * (Me!AnnualLeaveDue / 365)
' Divide Allocated days by 365 and multiply by number of days worked
If IsNull(DSum("[DaysTaken]", "[qryLeaveRecords]", "[LeaveType]<>'Sick' And [tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")) Then
TotLeaveRecorded = 0
Else
TotLeaveRecorded = DSum("[DaysTaken]", "[qryLeaveRecords]", "[LeaveType]<>'Sick' And [tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")
End If
' Calculates the number of leave days taken from leave records in database based on qryLeaveRecords
' Used IsNull to check if there are no records found - set calc result to zero
Me.Taken01 = TotLeaveRecorded 'visible option = no
' Display this on screen
If IsNull(Me.LeaveAccrued) Then
LeaveBalance = TotalLeaveAlloc - TotLeaveRecorded
Else
LeaveBalance = TotalLeaveAlloc - (TotLeaveRecorded + Me.LeaveAccrued)
End If
' Check if there is any Accrued Leave [reduces the need to load historical Leave Records] and subtract them
Me.Bal01 = LeaveBalance
' Display Balance
' Run Calcs for Sick Leave here.
If IsNull(DSum("[DaysTaken]", "[qrySickLeaveRecs]", "[tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")) Then
TotSLeaveRecorded = 0
Else
TotSLeaveRecorded = DSum("[DaysTaken]", "[qrySickLeaveRecs]", "[tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")
End If
' Calculates the number of leave days taken from leave records in database based on qrySickLeaveRecs
' Used IsNull to check if there are no records found - set calc result to zero
Me.Taken02 = TotSLeaveRecorded 'visible option = no
' Display this on screen
Me.Bal02 = Me.SickLeaveDue - TotSLeaveRecorded
' Display Sick Leave Balance
thanks in advance ...
NB pink fields on form are visible=No and for troubleshooting
Coding:
' Run Calcs here for Leave other than Sick Leave.
If IsNull(EmpStartDate) Then
DaysWorked = 0
Else
DaysWorked = DateDiff("d", EmpStartDate, Now)
End If
' Calc number of days between Employee Start Date and Now
TotalLeaveAlloc = DaysWorked * (Me!AnnualLeaveDue / 365)
' Divide Allocated days by 365 and multiply by number of days worked
If IsNull(DSum("[DaysTaken]", "[qryLeaveRecords]", "[LeaveType]<>'Sick' And [tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")) Then
TotLeaveRecorded = 0
Else
TotLeaveRecorded = DSum("[DaysTaken]", "[qryLeaveRecords]", "[LeaveType]<>'Sick' And [tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")
End If
' Calculates the number of leave days taken from leave records in database based on qryLeaveRecords
' Used IsNull to check if there are no records found - set calc result to zero
Me.Taken01 = TotLeaveRecorded 'visible option = no
' Display this on screen
If IsNull(Me.LeaveAccrued) Then
LeaveBalance = TotalLeaveAlloc - TotLeaveRecorded
Else
LeaveBalance = TotalLeaveAlloc - (TotLeaveRecorded + Me.LeaveAccrued)
End If
' Check if there is any Accrued Leave [reduces the need to load historical Leave Records] and subtract them
Me.Bal01 = LeaveBalance
' Display Balance
' Run Calcs for Sick Leave here.
If IsNull(DSum("[DaysTaken]", "[qrySickLeaveRecs]", "[tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")) Then
TotSLeaveRecorded = 0
Else
TotSLeaveRecorded = DSum("[DaysTaken]", "[qrySickLeaveRecs]", "[tblEmployees]![EmployeeID] = [tblLeaveRecord]![EmployeeID]")
End If
' Calculates the number of leave days taken from leave records in database based on qrySickLeaveRecs
' Used IsNull to check if there are no records found - set calc result to zero
Me.Taken02 = TotSLeaveRecorded 'visible option = no
' Display this on screen
Me.Bal02 = Me.SickLeaveDue - TotSLeaveRecorded
' Display Sick Leave Balance
thanks in advance ...