For the first one, I rearranged the start of the code a bit:
CODE
Private Sub Form_Current()
On Error GoTo Error_Form_Current
Dim adoFindRec As New ADODB.Recordset
Dim txtSql As String
If IsNull(Me.EmployeeID) Then
txtStartDate = Null
txtEndDate = Null
Exit Sub
End If
'For getting Absences from the latest dated entry
txtSql = "SELECT Max(tblAbsence.AbsDate) AS AbsDate FROM tblAbsence where tblAbsence.EmployeeId = " & Me.EmployeeID
'txtSql = "SELECT tblAbsence.AbsDate FROM tblAbsence ORDER BY tblAbsence.AbsDate desc"
adoFindRec.Open txtSql, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
adoFindRec.MoveFirst
txtStartDate = adoFindRec![AbsDate]
If IsNull(txtStartDate) Then
txtStartDate = Null
txtEndDate = Null
adoFindRec.Close
Exit Sub
End If
txtEndDate = DateAdd("M", -12, txtStartDate)
Me.txt12ATotal = Nz(DSum("AbsDays", "tblAbsence", "AbsDate Between #" & txtEndDate & "# and #" & txtStartDate & "# and EmployeeID = " & Me.EmployeeID), 0) [color="red"] ' this line on, code has not changed [/color]
For the second one, you just need to add a Me.requery after the absence is saved - this could be sfter the save line behind the save button, or on the afterupdate of one of the fields in the subform (in wchich case you'll need to specifiy which form you want to requery.
Hope this helps
Anne