CptPicard
asked on
Runt-ime Error '3077'
I use Access 2010
If there's no information in the field (ContactID) and I click on this button within my form with the following code in my click event. I get a Run-time error '3077': Syntax error (missing operator) in expression.
Dim rs As DAO.Recordset
DoCmd.OpenForm "form1"
With Forms("form1")
Set rs = .RecordsetClone
rs.FindFirst "ContactID = " & Me.ContactID
If rs.NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
Set rs = Nothing
Exit Sub
End If
.Bookmark = rs.Bookmark
End With
Set rs = Nothing
How do I stop this error from appearing by tweaking the above code?
Thanks.
If there's no information in the field (ContactID) and I click on this button within my form with the following code in my click event. I get a Run-time error '3077': Syntax error (missing operator) in expression.
Dim rs As DAO.Recordset
DoCmd.OpenForm "form1"
With Forms("form1")
Set rs = .RecordsetClone
rs.FindFirst "ContactID = " & Me.ContactID
If rs.NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
Set rs = Nothing
Exit Sub
End If
.Bookmark = rs.Bookmark
End With
Set rs = Nothing
How do I stop this error from appearing by tweaking the above code?
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
By the way,
you don't really need to set the reference to the recordset, you could use:
With Forms("form1").RecordsetCl one
.FindFirst "ContactID = " & Me.ContactID
If .NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
else
Forms("form1").Bookmark = .Bookmark
end if
End With
And if the form this is running from is "form1", you can replace:
Forms("form1")
with:
me
So it would look like:
With me.RecordsetClone
.FindFirst "ContactID = " & Me.ContactID
If .NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
else
me.Bookmark = .Bookmark
endif
End With
I don't know what other code you have following this With/End With construct, but it wouldn't normally be much. Since you are not instantiating the rs, you don't need to set it to nothing, and probably don't need the "Exit Sub" line if you add an Else clause before the Bookmark line.
I cannot tell from your code whether ContactID as mentioned above in me.ContactID is the name of a control, or a field. You should probably consider using a naming convention for your controls (txt_ContactID, cbo_ContactID, lst_ContactID) and might want to use brackets around your field names in code me.[ContactID] when referring to a field rather than a control.
This will make it easier to read your code later, as you get more experienced at this.
you don't really need to set the reference to the recordset, you could use:
With Forms("form1").RecordsetCl
.FindFirst "ContactID = " & Me.ContactID
If .NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
else
Forms("form1").Bookmark = .Bookmark
end if
End With
And if the form this is running from is "form1", you can replace:
Forms("form1")
with:
me
So it would look like:
With me.RecordsetClone
.FindFirst "ContactID = " & Me.ContactID
If .NoMatch = True Then
MsgBox "Sorry, Can't Find ContactID"
else
me.Bookmark = .Bookmark
endif
End With
I don't know what other code you have following this With/End With construct, but it wouldn't normally be much. Since you are not instantiating the rs, you don't need to set it to nothing, and probably don't need the "Exit Sub" line if you add an Else clause before the Bookmark line.
I cannot tell from your code whether ContactID as mentioned above in me.ContactID is the name of a control, or a field. You should probably consider using a naming convention for your controls (txt_ContactID, cbo_ContactID, lst_ContactID) and might want to use brackets around your field names in code me.[ContactID] when referring to a field rather than a control.
This will make it easier to read your code later, as you get more experienced at this.
ASKER