What we appear to be dealing with is the fact that you have a query that runs properly if you use a date as criteria, but you're trying to run sql from a form event.
Obviously then, there is a difference between the 2 sql statements. In a case like this, a common approach is to output the sql to the immediate window as per post 11. Not sure you ever did that. If the problem isn't obvious, copy to a new query and for Selects, just run. For action queries, I switch to datasheet view so as to not actually run the query, but get a view of what the effect will be. FYI - sometimes that shows blank rows due to the nature of the query (not important here) but at least it's an indicator that the query will run. Otherwise, the sql should be highlighted in sql view with the offending portion highlighted. If you didn't do this, you missed an important learning opportunity about that, and perhaps concatenation, which is what you're doing here - building expressions or sql by creating expressions or sql with string portions and variables.



Per your attachment:
1 would never run because of invalid line continuation
2, you are inserting ' around the date variable, giving you #'01/01/2017'#
4, because date delimiters are missing (#)
3 Is almost what I gave you, except for which I already apologized, I didn't provide line continuation (which I don't use) or any other acceptable method. Thus #3 suffers from what they all do, namely lack of space between words at the end off each line. So fixing any of the other problems wouldn't be enough. Your output should have looked like
Code:
UPDATE POInstall LEFT JOIN POSurvey ON POInstall.POID=POSurvey.POIDSET POInstall.NewEQApDate = dateAddWeekday(#01/01/2017#,1)WHERE ([Forms]![POSurvey]![TSRApCoDate]) Is Not Null And POInstall.NewEQApDate  Is Null;"
so no space before SET or WHERE.

Not that my way is better, but I don't use line continuation. I have copied such examples right from MS web pages and they didn't work until I got rid of them. I could see nothing wrong, yet they wouldn't run. This is how I would have constructed your sql:
Code:
sSQL = "UPDATE POInstall LEFT JOIN POSurvey ON POInstall.POID=POSurvey.POID "
sSQL =sSQL  & "SET POInstall.NewEQApDate = dateAddWeekday(#" & [Forms]![POSurvey]![TSRApCoDate] & "#,1) "
sSQL =sSQL & "WHERE ([Forms]![POSurvey]![TSRApCoDate]) Is Not Null And POInstall.NewEQApDate Is Null;"
Regardless of which method you use, you have to ensure you provide spaces where needed.

Maybe you should research concatenation as I'm not sure you understand the concept. Basically, each literal part needs to be sandwiched in between double quotes while variables (including control references) lie in between. The literal parts sometimes need delimiters for text or dates, which tends to make it trickier. You cannot use double quotes as delimiters because it would cause incorrect terminations of parts, so singles are used. Sometimes you can/have to use the Chr() function to provide Ascii values for double quotes. Concatenation is why we don't like words with apostrophes (Jones').

Maybe #3 isn't the real reason. Any further investigation of this will require a copy of the db. The problem could also be the function call for all I know.