How can display the sql before the error occurs?

B

Big Moxy

I'm getting this error on my asp/access page. It's a sql error
triggered by Recordset1.open sql,conn,1,1. The sql is constructed from
user input on a search page.

ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are
in conflict with one another.

The problem I'm having is getting a Response.Write(sql) to actually
display the sql code before the open statement.

Can someone please help me display my generated sql code?

Thank you!
 
A

Anthony Jones

Big Moxy said:
I'm getting this error on my asp/access page. It's a sql error
triggered by Recordset1.open sql,conn,1,1. The sql is constructed from
user input on a search page.

ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are
in conflict with one another.

The problem I'm having is getting a Response.Write(sql) to actually
display the sql code before the open statement.

Can someone please help me display my generated sql code?


Try using a Response.End directly after the Response.Write sql
 
B

Big Moxy

Try using a Response.End directly after the Response.Write sql

I'm sorry to say that it doesn't stop at the Response.End(). The code
continues until the error occurs.
 
B

Bob Barrows [MVP]

The error you are getting is unlikely to be caused by the sql string you are
using. It is more likely to be a problem with the arguments used for the
Open statement.
I'm sorry to say that it doesn't stop at the Response.End(). The code
continues until the error occurs.

And you have the Response.Write statement BEFORE the Open statement? You are
wasting your time and ours by failing to show us the code that's giving you
the problem.
 
B

Big Moxy

The error you are getting is unlikely to be caused by the sql string you are
using. It is more likely to be a problem with the arguments used for the
Open statement.





And you have the Response.Write statement BEFORE the Open statement? You are
wasting your time and ours by failing to show us the code that's giving you
the problem.

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"- Hide quoted text -

- Show quoted text -

This is the code that builds the SQL.

Response.Write(Request.ServerVariables("REQUEST_METHOD") & "<br>")
If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
If Request.Form("ctlSearchField") <> "" Then
Dim strWhere, strQuote
If (IsNumeric(ctlSearchFor) AND ctlSearchOption <> "LIKE" AND
ctlSearchOption <> "HAS") Then
strQuote = ""
Else
strQuote = "'"
End If
Response.Write("strQuote=" & strQuote & "x<br>")

If ctlSearchOption = "LIKE" Then
ctlSearchFor = ctrlSearchFor & "*"
End If
If ctlSearchOption = "HAS" Then
ctlSearchOption = "LIKE"
ctlSearchFor = "*" & ctrlSearchFor & "*"
End If
Response.Write("ctlSearchOption=" & ctlSearchOption & "+<br>")
Response.Write("ctlSearchFor=" & ctlSearchFor & "+<br>")
If ctlSearchField = "*" Then
strWhere = "ID " & ctlSearchOption & " " & strQuote & ctlSearchFor &
strQuote & " OR " &_
"[Equipment Description] " & ctlSearchOption & " " & strQuote &
ctlSearchFor & strQuote & " OR " &_
"Day " & ctlSearchOption & " " & strQuote & ctlSearchFor &
strQuote & " OR " &_
"Week " & ctlSearchOption & " " & strQuote & ctlSearchFor &
strQuote & " OR " &_
"Month " & ctlSearchOption & " " & strQuote & ctlSearchFor &
strQuote & " "
Else
strWhere = "WHERE " & ctlSearchField & " " & ctlSearchOption & " " &
strQuote & ctlSearchFor & strQuote & " "
End If
Response.Write("strWhere=" & strWhere & "+<br>")
Response.End()
sql = "SELECT * FROM [" & tables(tableID) & "] " &_
"WHERE " & strWhere &_
"ORDER BY ID ASC"
Response.Write(sql & "<br>")
Response.End()

End If
Else
sql = "SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC"
Response.Write(sql & "<br>")
End If

Recordset1.open sql,conn,1,1

If not Recordset1.eof then
Recordset1_total = Recordset1.recordcount
Else
Recordset1_total = 0
End if

Recordset1_numRows = Recordset1_total

This is the seach form:

<form action="db.asp?ID=<%=tableID%>" method="post" name="search"
target="_self">
<TABLE width="500" align="center" border="1">
<TBODY>
<TR>
<TD vAlign="middle" align="center"><h3><B>Search for: </B></h3></TD>
</TR>
<TR>
<TD align="left">
<select id="ctlSearchField">
<option value="*">Any field</option>
<option value="ID">ID</option>
<option value='Equipment Description'>Equipment Description</option>
<option value='Day'>Day</option>
<option value='Week'>Week</option>
<option value='Month'>Month</option>
</select>
</TD>
</TR>
<TR>
<TD align="left">
<select id="ctlSearchOption">
<option value="HAS">Contains</option>
<option value="=">Equals</option>
<option value="LIKE">Starts with ...</option>
<option value=">">More than ...</option>
<option value="<">Less than ...</option>
<option value=">=">Equal or more than ...</option>
<option value="<=">Equal or less than ...</option>
</select>
</TD>
</TR>
<TR>
<TD align="left"><INPUT name="ctlSearchFor" type="text"
id="ctlSearchFor" size="40">
</TD>
</TR>
<TR>
<TD align="left"><INPUT type="submit" value="Search">&nbsp;<INPUT
type="submit" value="Show all">
</TD>
</TR>
</TBODY>
</TABLE>
</form>
 
B

Bob Barrows [MVP]

Big said:
sql = "SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC"
Response.Write(sql & "<br>")
End If

You need the Response.End right here, immediately before the Open statement
 
B

Big Moxy

Big said:
sql = "SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC"
Response.Write(sql & "<br>")
End If

You need the Response.End right here, immediately before the Open statement


Recordset1.open sql,conn,1,1
If not Recordset1.eof then
Recordset1_total = Recordset1.recordcount
Else
Recordset1_total = 0
End if
Recordset1_numRows = Recordset1_total

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

I placed it where I did because the initial page display uses sql =
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" which works
just fine. I will never get the search option if the Response.End is
placed where you suggest.
 
B

Bob Barrows [MVP]

Big said:
I placed it where I did because the initial page display uses sql =
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" which works
just fine. I will never get the search option if the Response.End is
placed where you suggest.

I don't get you. if you want to troubleshoot the sql statement, then you
have to print it out before it is executed ...
 
B

Big Moxy

Big said:
I placed it where I did because the initial page display uses sql =
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" which works
just fine. I will never get the search option if the Response.End is
placed where you suggest.

I don't get you. if you want to troubleshoot the sql statement, then you
have to print it out before it is executed ...
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

Perhaps you are not understanding the sequence of events.

The page with the problem serves two purposes.

1. It displays a tabular list of data
2. Underneath the list is a search option -

-Select a field to search on
-Select the type of search
-Click the search button

The initial display is generated by an HTTP GET so the initial SQL is
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" and that
ALWAYS works. The problem is with the SQL generated from the search
form.

A search results display is generated by an HTTP POST of the search
form so it follows the IF "POST" Then logic.

There is ONE open statement for both page entry points. Besides what
is wrong is conditionally executing the Response.End? Having the
Response.End inside of an If statement should work. The concept works
in other languages I have coded in. Is VBscript an exception?

If <some condition> Then
build sql statement
response.write(sql)
response.end
Else
build sql statement
End If
Recordset.open...

So as you can see if I place the Response.End after the End If and
before the Open I will never get a display.
 
B

Big Moxy

Big Moxy wrote:
I placed it where I did because the initial page display uses sql =
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" which works
just fine. I will never get the search option if the Response.End is
placed where you suggest.
I don't get you. if you want to troubleshoot the sql statement, then you
have to print it out before it is executed ...
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

Perhaps you are not understanding the sequence of events.

The page with the problem serves two purposes.

1. It displays a tabular list of data
2. Underneath the list is a search option -

-Select a field to search on
-Select the type of search
-Click the search button

The initial display is generated by an HTTP GET so the initial SQL is
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" and that
ALWAYS works. The problem is with the SQL generated from the search
form.

A search results display is generated by an HTTP POST of the search
form so it follows the IF "POST" Then logic.

There is ONE open statement for both page entry points. Besides what
is wrong is conditionally executing the Response.End? Having the
Response.End inside of an If statement should work. The concept works
in other languages I have coded in. Is VBscript an exception?

If <some condition> Then
build sql statement
response.write(sql)
response.end
Else
build sql statement
End If
Recordset.open...

So as you can see if I place the Response.End after the End If and
before the Open I will never get a display.

NEVER MIND. I WILL SIMPLY SPLIT THE PAGES AND TROUBLESHOOT THE SEARCH
RESULTS SEPARATELY.
 
B

Bob Barrows [MVP]

Big said:
Big said:
I placed it where I did because the initial page display uses sql =
"SELECT * FROM [" & tables(tableID) & "] ORDER BY ID ASC" which
works just fine. I will never get the search option if the
Response.End is placed where you suggest.

I don't get you. if you want to troubleshoot the sql statement, then
you have to print it out before it is executed ...
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so
I don't check it very often. If you must reply off-line, then remove
the "NO SPAM"

Perhaps you are not understanding the sequence of events.

It's irrelevant. Your goal at this point is not to make the page run to
completion. Your goal at this point is to discover what the sql string
contains (at least, that was the goal you stated in your opening post).
Nothing else that happens after the sql string is built is relevant until
you determine that your sql statement is correct. Once you have determined
that the sql statement is what you expect it to be, then you can start
worrying about getting the rest of the page to run.
 
B

Bob Barrows [MVP]

Big said:
So as you can see if I place the Response.End after the End If and
before the Open I will never get a display.

Oh damn - my previous repoly was bollocks.
I need to look at this again tomorrow
 
B

Bob Barrows [MVP]

Big said:
NEVER MIND. I WILL SIMPLY SPLIT THE PAGES AND TROUBLESHOOT THE SEARCH
RESULTS SEPARATELY.

Oh shoot - you got to this too quick. You're right - my previous reply was
crap - I need to shut the computer off ... now.
 
P

p byers

Just a thought
Why not use "On Error" to control the Response.Write and Response.End

ByTheWay, you used "Response.End()" - I dont us the brackets for this
statement

Pete (Northolt UK)
 
B

Bob Barrows [MVP]

Big said:
NEVER MIND. I WILL SIMPLY SPLIT THE PAGES AND TROUBLESHOOT THE SEARCH
RESULTS SEPARATELY.

Sorry about yesterday. Are you still here? Do you still need help with
this?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top