Recordset分页不起作用

时间:2015-02-04 02:15:26

标签: sql vbscript asp-classic recordset

任何人都可以告诉我为什么我的记录集分页不起作用。我不太了解这些东西,我在我的代码中的部分内容我从这个微软网站链接中提取:http://support.microsoft.com/kb/202125

这是我的代码:

Dim con, con2, rec, rec2, dsn, dsn2, sql, sql2, rName, sDate, eDate, intPageCount
rName=Request.Form("rn")
sDate=FormatDateTime(Request.Form("sD"), 2)
eDate=FormatDateTime(Request.Form("eD"), 2)

dsn = "Radio"
dsn2 = "InfoLib_SQL"
sql = "SELECT * FROM T_RadioControlLog WHERE RadioName = '"&rName&"' AND CONVERT(date, Date, 101) >= 
       CONVERT(date, '"&sDate&"', 101) AND CONVERT(date, Date, 101) <= CONVERT(date, '"&eDate&"', 101)"

set con=Server.CreateObject("ADODB.Connection")
set rec=Server.CreateObject("ADODB.Recordset")
rec.CursorLocation=3

con.Open dsn, "pw", "pw"
rec.Open sql, con
rec.PageSize=5
intPageCount=rec.PageCount

Select Case Request("Action")
    case "<<"
        intpage =1
    case"<"
        intpage = Request("intpage")-1
        if intpage < 1 then intpage = 1
    case ">"
        intpage = Request("intpage")+1
        if intpage > intPageCount then intpage = intPageCount
    case ">>"
        intpage = intPageCount
    case else
        intpage = 1
end select

If NOT rec.eof Then
Response.write("<table>")
rec.AbsolutePage = intpage
For intRecord = 1 to rec.PageSize
    Response.write("<tr><td>Radio Name</td><td>Date</td><td>Employee Name</td><td>ID#</td></tr>")   
    Response.write("<tr><td>" & rec.fields("RadioName") & "</td>")  
    Response.Write("<td>" & rec.fields("Date") & "</td>")
    set con2=Server.CreateObject("ADODB.Connection")
    set rec2=Server.CreateObject("ADODB.Recordset")
    sql2 = "SELECT EMP_NA FROM EMP_TABLE WHERE ID='"&rec.fields("ID#")&"'"
    con2.Open dsn2, "pw", "pw"
    rec2.Open sql2, con2
    Response.Write("<td>" & rec2.fields("EMP") & "</td>")
    Response.Write("<td>" & rec.fields("ID#")& "</td></tr>")
    rec.movenext
    rec2.close
    con2.close
    set rec2=nothing
    set con2=nothing
If rec.EOF Then Exit For
Next
%>
<tr>
<form name="pageNav" action="results.asp" method="post">
<input type="hidden" name="intpage" value="<%=intpage%>">
<input type="submit" name="Action" value="<<">
<input type="submit" name="Action" value="<">
<input type="submit" name="Action" value=">">
<input type="submit" name="Action" value=">>">
Page: <%=intpage & " of " & intPageCount%>
</tr>
</form>
</table>
<%
Else
Response.write("Sorry, no entries were found.")
End If


rec.close
set rec=nothing
con.close
set con=nothing

对数据库工作和条目的调用被确定地返回,我得到一个包含5个条目的小表,因为我的记录集已设置为返回但是当我单击>>, <, >, etc.它没有显示任何内容时,页面只是空白。如果有人能够解释记录集分页的工作方式,那就太棒了。

2 个答案:

答案 0 :(得分:0)

关于你的方法的一些评论。

Dim intPageCount但不是intPage并不是什么大不了的事,但仍然是个人偏好你应该Dim

您拥有以前页面中的字段,这些字段在回发期间似乎无法保存。具体来说,我看到了这部分代码

rName=Request.Form("rn")
sDate=FormatDateTime(Request.Form("sD"), 2)
eDate=FormatDateTime(Request.Form("eD"), 2)

但没有像这样的相应部分

<form name="pageNav" action="results.asp" method="post">
<input type="hidden" name="rn" value="<%=rName%>">
<input type="hidden" name="sD" value="<%=sDate%>">
<input type="hidden" name="eD" value="<%=eDate%>">
<input type="hidden" name="intpage" value="<%=intpage%>">

在回发时为这些值启用回调。

答案 1 :(得分:-8)

Function ShowFolderList(folderspec)

   Dim fso, f, f1, fc, s

   Set fso = CreateObject("Scripting.FileSystemObject")

   Set f = fso.GetFolder(folderspec)

   Set fc = f.Files

   For Each f1 in fc

      s = s & f1.name 

      s = s & "<BR>"

   Next

   ShowFolderList = s

End Function

这是来自帮助。 FSO中没有通配符。你必须自己做。因此,测试f1.name是否符合您的要求,然后复制该文件。