Print Page | Close Window

(missing operator) in query expression

Printed From: Web Wiz Forums
Category: General Discussion
Forum Name: Classic ASP Discussion
Forum Description: Discussion on Active Server Pages (Classic ASP).
URL: https://forums.webwiz.net/forum_posts.asp?TID=800
Printed Date: 29 March 2026 at 2:55am
Software Version: Web Wiz Forums 12.08 - https://www.webwizforums.com


Topic: (missing operator) in query expression
Posted By: pedalcars
Subject: (missing operator) in query expression
Date Posted: 07 March 2003 at 9:56am
AARRGG!!! Help! Please! I'm at my wit's end...

strRaceID = Request.QueryString("RaceID")
'Plus a check that sets strRaceID = 0 if it's blank / null / non-numeric

Set rsResultHeaders = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT tblResultHeaders.* FROM tblResultHeaders WHERE tblResultHeaders.Date_ID = " & strYearID & " ORDER BY tblResultHeaders.Race_ID ASC;"

rsResultHeaders.Open strSQL, strCon

Do While NOT rsResultHeaders.EOF

If rsResultHeaders("Race_ID") = strRaceID Then

'(amongst other variables set)
lngHeaderID = rsResultHeaders("HeaderID")

rsResultHeaders.MoveNext
Loop


'Then later on...

Set rsResults = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT tblResults.* FROM tblResults WHERE tblResults.HeaderID = " & lngHeaderID & " ORDER BY tblResults.Position ASC;"

rsResults.Open strSQL, strCon


Result?

I have set up response.write statements that indicate that, at least once in the run through the recordset there's a match, for example:
TEST rsResultHeaders("Race_ID") = 0
TEST strRaceID = 0

However, lngHeaderID is never set (indicating the IF statement ignores the match), so I get:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'tblResults.HeaderID ='.


Doesn't seem to matter whether xxxRaceID is str, lng or int, likewise with xxxHeaderID.

Please, someone point out my stupid mistake before the monitor matches the Wright brothers for air time...


-------------
http://www.pedalcars.info/ - www.pedalcars.info

The most fun on four wheels




Replies:
Posted By: pedalcars
Date Posted: 07 March 2003 at 10:39am
Oh, plus, just changed the If statement (as a test) to:

If rsResultHeaders("Race_ID") = "0" Then

as I know that zero is one valid value.

Then it works as it should. So this indicates incorrect syntax in the IF statement - what should it be?

Ta


-------------
http://www.pedalcars.info/ - www.pedalcars.info

The most fun on four wheels



Posted By: MorningZ
Date Posted: 07 March 2003 at 10:40am
have you simply tried

strSQL = "SELECT tblResults.* FROM tblResults WHERE tblResults.HeaderID = " & lngHeaderID & " ORDER BY tblResults.Position ASC;"

Response.Write strDQL
Response.End


rsResults.Open strSQL, strCon


too make sure your logic works? becuase the error doesn't lie, it IS missing an operator (read: problem with SQL statement)

-------------
Contribute to the working anarchy we fondly call the Internet


Posted By: MorningZ
Date Posted: 07 March 2003 at 10:51am
Also to make

'Plus a check that sets strRaceID = 0 if it's blank / null / non-numeric

a little easier, i'll share a function i use a whole lot

Function CLng0( expr )
     CLng0 = 0
     On Error Resume Next
     CLng0 = CLng( expr)
     On Error Goto 0
End Function


This will always guarentee a number coming out of it, stops SQL Injectiom, stops nulls, stops empty string... and if you run it against a DB, it'll come back with no records (assuming you are looking for a primary key)


-------------
Contribute to the working anarchy we fondly call the Internet


Posted By: pedalcars
Date Posted: 07 March 2003 at 11:21am
Thanks for this - I hadn't tried the R.W strSQL, but adding it gives:

SELECT tblResults.* FROM tblResults WHERE tblResults.HeaderID = ORDER BY tblResults.Position ASC;

i.e., the part where the lngHeaderID number should be is blank (which corresponds to the variable never being set).

This ties in with the fact that R.W'ing the lngHeaderID gives a big fat blank, because it's never assigned a value; again, I'm guessing because the IF statement never picks up the match - within that IF statement I've set a R.W statement to write "I've found a match" when it does.

It never does, unless I put in the "0" as per above.

Thanks for the function above though, I'll try that as well.


-------------
http://www.pedalcars.info/ - www.pedalcars.info

The most fun on four wheels



Posted By: pedalcars
Date Posted: 07 March 2003 at 12:25pm
WOW!

Thanks MorningZ - I stuck in your function (no other changes to the code) and, hey presto, it works! (not just with setting a null value to zero either - it works starting with a valid number, which it didn't use to)

Brilliant. I think I owe you a beer.


-------------
http://www.pedalcars.info/ - www.pedalcars.info

The most fun on four wheels




Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.08 - https://www.webwizforums.com
Copyright ©2001-2026 Web Wiz Ltd. - https://www.webwiz.net