The best reference for syntax is the Help file. I think you may want something with a little more scope than just a syntax reference.
When you write the db.Execute statement, approach it this way. Execute is going to take a string argument containing a SQL statement and pass it to the database engine. You can code the string argument as an expression that evaluates to a string, but once evaluated, the completed string must be a complete and valid SQL statement.
Part of what you wrote (the part ASPNames.ASNumber = [Forms]![ASPData]![ASNumber]) was written as part of the string expression. The VBA code would evaluate this as True or False, and then stick the string "True" or "False" into the SQL string. You didn't want VBA to evaluate this expression, you wanted the database engine to do that, so this comparison should wind up as part of the string.
In general, anything outside the quotes is evaluated and turned into a string by VBA, and that string will then be concatenated with the quoted parts to make a SQL statement that the database engine can understand.
What you need is something like this:
db.Execute "UPDATE ASPData SET ASPData.ServeDate = " _
& "#" & Me!DateString & "#" _
& " WHERE ASNumber = " & [Forms]![ASPData]![ASNumber]
I put the "ASNumber =" part in quotes, because I want the database engine to do the comparison as it reads each row. But I left the "[Forms]![ASPData]![ASNumber]" part outside of the quotes, so that VBA would translate the reference to the form control into a number, turn the number into a string, and append that to the SQL statement.
Note: This assumes that ServeDate is defined as a Date/Time field, and that DateString can be translated into a Date value in your locale (that is, that it contains appropriate delimiters and the month, day, and year are in a standard order). Jet SQL requires "#" delimiters around date constants, so I had to put those into the string. Rick Sprague