Sorry, the parameter query i am actually using does valadation etc... i only used the above code as an example because it creates the same annoying problem... The real module code is below:
Option Compare Database
Public Function inputPayNo() As String
Dim EmpMaster As ADODB.recordset
Dim EmpMasterSQL As String
Dim inputpn As String
Dim sname As String
Dim connection As ADODB.connection
Set connection = New ADODB.connection
Set EmpMaster = New ADODB.recordset
connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source= " & CurrentProject.FullName
connection.Open
EmpMasterSQL = "select * from [EmpMasterFilter]"
EmpMaster.Open EmpMasterSQL, connection, adOpenKeyset, adLockOptimistic
Do While True
EmpMaster.MoveFirst
inputpn = InputBox("Enter Pay Number"

EmpMaster.Find "[Pay_No] = '" & inputpn & "'"
If inputpn = "" Then
Exit Do
End If
If EmpMaster.EOF Or EmpMaster.BOF Then
MsgBox ("ERROR! The Pay Number requested is either incorrect or restricted "

& Chr$(10) & ("If you require access - Contact Sys Admin"

& Chr$(10) & Chr$(10) & ("You requested Pay Number - "

& inputpn
Else
'MsgBox ("You have requested the following Record: "

& Chr$(10) & (" Pay No: " & EmpMaster.Fields("pay_no"

& " Name: " & EmpMaster.Fields("surname"

), vbQuestion + vbYesNo
inputPayNo = inputpn
Exit Do
End If
Loop
End Function