Thank you, ***** ***** to do the trick. So just to finalise
1. I presume I can copy and paste this code across to the live DB?
Private Sub Form_Current()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
On Error Resume Next
Set rs = db.OpenRecordset("SELECT tblMembers.ID, tblMembers.Forename, tblMembers.Surname, Max(tblPayments.Date) AS MaxOfDate, Max([Date])+365 AS NextDate, tblPayments.As " & _
" FROM tblMembers INNER JOIN tblPayments ON tblMembers.ID = tblPayments.ID " & _
" Where tblMembers.ID = " & Me.ID & _
" GROUP BY tblMembers.ID, tblMembers.Forename, tblMembers.Surname, tblPayments.As " & _
" HAVING (((tblPayments.As)='Subscription'));")
Me.SubDue = rs("MaxOfDate")
Me.New_Sub_Due = rs("NextDate")
2. How is this linked to the fields?
3. Are there any complications if a field name is ***** ***** or do I just change the field name as normal and the coding catches up?
4. Are there any issues if I change the field data type from "text" to "date", so that it can be used for filters and queries correctly.