Problemer med paging på MS SQL
Jeg forsøger at køre nedenstående script for paging via en stored procedure på en MS SQL server. Men jej får fejlmeldingen "Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another" i linien ".CommandType = adCmdStoredProc"Nogen som har et forslag til hvad der kan være galt?
<%@ LANGUAGE=VBSCRIPT %>
<HTML>
<HEAD>
<TITLE>ASPPagesSQL.asp</TITLE>
<STYLE TYPE="text/css">
BODY {font-family:Tahoma,Arial,sans-serif; font-size:10pt}
.heading {font-family:Tahoma,Arial,sans-serif; font-size:14pt; font-weight:bold}
.cite {font-family:Tahoma,Arial,sans-serif; font-size:8pt}
</STYLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<SPAN CLASS="heading">Using SQL Server to Perform Data Paging</SPAN><HR>
<!--------------------------------------------------------------------------->
<%
Dim cmdAuthors
Dim rsData
Dim iPage
Dim iLastPage
Dim sQuote
sQuote = Chr(34)
' get the requested data
If Request.QueryString("PAGE") = "" Then
iPage = 1
Else
iPage = CInt(Request.QueryString("PAGE"))
If iPage < 1 Then
iPage = 1
End If
End If
' create the objects
strConn = "DRIVER=SQL Server; SERVER=localhost; UID=test; PWD=test; DATABASE=test;"
Set cmdAuthors = Server.CreateObject("ADODB.Command")
Set rsAuthors = Server.CreateObject("ADODB.Recordset")
With cmdAuthors
.ActiveConnection = strConn
.CommandText = "usp_PagedAuthors"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("RETURN_VALUE", adInteger, _
adParamReturnValue)
.Parameters.Append .CreateParameter("@iPage", adInteger, _
adParamINput, 8, iPage)
.Parameters.Append .CreateParameter("@iPageSize", adInteger, _
adParamINput, 8, 10)
Set rsData = .Execute
End With
' Create the table
' start building the table
Response.Write "<TABLE BORDER=1><THEAD><TR>"
For Each fldF In rsData.Fields
Response.Write "<TD>" & fldF.Name & "</TD>"
Next
Response.Write "</TR></THEAD><TBODY>"
' now loop through the records
While Not rsData.EOF
Response.Write "<TR>"
For Each fldF In rsData.Fields
Response.Write "<TD>" & fldF.Value & "</TD>"
Next
Response.Write "</TR>"
rsData.MoveNext
Wend
Response.Write "</TBODY></THEAD></TABLE><P>"
' now some paging controls
sMe = Request.ServerVariables("SCRIPT_NAME")
Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=1" & sQuote & ">First Page</A>"
' close the recordset and extract the number of records left
rsData.Close
iLastPage = cmdAuthors.Parameters("RETURN_VALUE")
' only give an active previous page if there are previous pages
If iPage <= 1 Then
Response.Write " <SPAN>Previous Page</SPAN>"
Else
Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & iPage - 1 & sQuote & ">Previous Page</A>"
End If
' only give an active next page if there are more pages
If iLastPage = iPage Then
Response.Write " <SPAN>Next Page</SPAN>"
Else
Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & iPage + 1 & sQuote & ">Next Page</A>"
End If
Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & iLastPage & sQuote & ">Last Page</A>"
' clean up
Set rsData = Nothing
Set cmdAuthors = Nothing
%>
<!--------------------------------------------------------------------------->
<HR><SPAN CLASS="cite">©1999 <A CLASS="cite" HREF="http://www.wrox.com/">Wrox Press</A> -
<A CLASS="cite" HREF="http://webdev.wrox.co.uk/books/2610/">Professional ASP 3.0</A> (ISBN: 1-861002-61-0)</SPAN>
</BODY>
</HTML>
