I would suggest the same as Matthew Grace.
In the reports design view,
select your id column
set the property for IsHyperlink to "Screen Only" (this will make the id look like a hyperlink and then be more obvious that it is indeed clickable)
you can even set the control source to this to make it show "Open" instead of the ID number. Unless you want the id number to show that is.
Code:
=IIf(IsNull([ID]),"(New)","Open")
then on the ID columns "OnClick" event you can either use a macro or VBA to open the form to the correct record.
I choose vba.
This is actual code from a report in one of my databases. my "ID" column is named "txtOpen" this is it's onclick event.
Code:
Private Sub txtOpen_Click()
On Error GoTo txtOpen_Click_Err
Dim CurrentID As Integer
On Error Resume Next
If (MacroError.Number <> 0) Then
Beep
MsgBox MacroError.Description, vbQuestion, "Error"
Exit Sub
End If
On Error GoTo 0
DoCmd.OpenForm "EmployeeDetails", acNormal, "", "[ID]=" & Nz(ID, 0), , acWindowNormal
If (Not IsNull(ID)) Then
CurrentID = ID
End If
If (IsNull(ID)) Then
CurrentID = Nz(DMax("[ID]", Report.RecordSource), 0)
End If
DoCmd.Requery ""
DoCmd.SearchForRecord , , acFirst, "[ID]=" & CurrentID
txtOpen_Click_Exit:
Exit Sub
txtOpen_Click_Err:
MsgBox Error$
Resume txtOpen_Click_Exit
End Sub
Simplified i believe that you can just use this to find the record you are wanting, however i have not tested it without the error trapping and conditionals.
DoCmd.OpenForm "EmployeeDetails", acNormal, "", "[ID]=" & Nz(ID, 0), , acDialog
DoCmd.SearchForRecord , "", acFirst, "[ID]=" & Nz(ID, 0)