I looked at your code and saw that the IIF() statement was causing the error. The TRUE part and the FALSE part need to have double quotes as delimiters, not single quotes. Plus there were some other quote errors.



I created a table and added the code. It now complies correctly..... but I don't guarantee the results.

Code:
Public Function GetThing()
   Dim GeoData As DAO.Database
   Dim Location As DAO.Recordset
   Set GeoData = CurrentDb
   Dim strsql As String

   strsql = "SELECT TOP 1 CStr(CInt(GeoData!Area)) + GeoData!Block + GeoData![Space]  AS Expr1"
   strsql = strsql & " FROM GeoData"
   '   Debug.Print strsql
   strsql = strsql & " WHERE GeoData.EVEN_ODD_I = '" & IIf([Forms]![Activity]![StreetNo] Mod 2 = 0, "E", "O") & "'"
   '   Debug.Print strsql
   strsql = strsql & " And GeoData!STREET_DIRECTION_CD = '" & [Forms]![Activity]![StreetNo] & "'"
   '   Debug.Print strsql
   strsql = strsql & " And GeoData!STREET_NME Like '" & [Forms]![Activity]![StreetNo] & "*'"
   '   Debug.Print strsql
   strsql = strsql & " And '" & [Forms]![Activity]![StreetNo] & "' Between GeoData!LOW_ADDRESS_NO And GeoData!HIGH_ADDRESS_NO"

   Debug.Print strsql

End Function

I am not sure about the "+" operator in the first line. If you are trying to concatenate the terms, you should be using the ampersand.
And you are taking the area, converting it to an Integer, then converting it right back to a string?