在用ASP进行数据库查询时,怎样实现分几页显示
编号:QA002011
建立日期: 1999年11月12日 最后修改日期:1999年11月13日
所属类别:
lzf:
操作系统: nt
编程工具: asp
在用asp进行internet数据库查询时,如果查询的结果太多,一页放不下,怎样实现分几页显示,而且可以通过其中的任何一页跳转到其他页?
回答:
Zhao Yu的意见:
ADODB.Recordset有个AbsolutPage属性,可以满足你的需要.这是MSDN中的范例:
AbsolutePage、PageCount 和 PageSize 属性范例
该范例使用 AbsolutePage、PageCount 和 PageSize 属性,以每次五个记录的方式显示雇员表中的姓名和受雇日期。
Public Sub AbsolutePageX()
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strMessage As String
Dim intPage As Integer
Dim intPageCount As Integer
Dim intRecord As Integer
' 使用客户端游标为雇员表打开一个记录集。
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstEmployees = New ADODB.Recordset
' 使用客户端游标激活 AbsolutePosition 属性。
rstEmployees.CursorLocation = adUseClient
rstEmployees.Open "employee", strCnn, , , adCmdTable
' 显示姓名和受雇日期,每次五个记录。
rstEmployees.PageSize = 5
intPageCount = rstEmployees.PageCount
For intPage = 1 To intPageCount
rstEmployees.AbsolutePage = intPage
strMessage = ""
For intRecord = 1 To rstEmployees.PageSize
strMessage = strMessage & _
rstEmployees!fname & " " & _
rstEmployees!lname & " " & _
rstEmployees!hire_date & vbCr
rstEmployees.MoveNext
If rstEmployees.EOF Then Exit For
Next intRecord
MsgBox strMessage
Next intPage
rstEmployees.Close
End Sub
Tedyt的意见:
这个问题可以通过ADODB.RecordSet对象的两个属性来解决。在ADODB.RecordSet对象中,属性Pagesize配置每一数据页的纪录行数。属性AbsolutePage纪录目前的绝对数据页位置。
编写一个数据纪录分页浏览子程序,以纪录集和数据页为参数。如下:
(这是本人以前做的代码,仓促间没作修改,应该可以看得明白)
******************** 数据记录集分页浏览子程序 **********************
Sub PageView( Recordset_Obj ,PageNum )
'显示字段标题
dim Temp,wid
Response.Write "<CENTER><TABLE BORDER=0 width=""100%"" border=""0"" cellpadding=""4"" cellspacing=""1"">"
Response.Write "<TR bgcolor=""#000084"">"
For i=0 to Recordset_Obj.Fields.Count-1
Temp=""
select case Recordset_Obj.Fields(i).Name
case "BH"
Temp="编号"
' wid=35
case "DAH"
Temp="档案号"
' wid=50
case "XM"
Temp="姓名"
' wid=45
case "CSNY"
Temp="出生日期"
' wid=70
case "GZDW"
Temp="工作单位"
' wid=75
case "ZW"
Temp="职务"
' wid=35
case "JB"
Temp="级别"
' wid=35
case "WHCD"
Temp="文化程度"
' wid=65
case "BYXX"
Temp="毕业学校"
' wid=70
case "ZYJSZW"
Temp="专业技术职务"
' wid=65
case "CJGZSJ"
Temp="参加工作时间"
' wid=70
case "SXZY"
Temp="所学专业"
' wid=60
case "ZZMM"
Temp="政治面貌"
' wid=65
end select
Response.Write "<TD><b><font color=""#FFFFFF"">"&Temp&"</font></b></TD>"
Next
Response.Write "</TR>"
'显示字段内容
Recordset_Obj.AbsolutePage = PageNum
For iPage=1 to Recordset_Obj.PageSize
if (iPage mod 2=1) then
Response.Write "<TR>"
else
Response.Write "<TR bgcolor=""#E7E3E7"">"
end if
For i=0 to Recordset_Obj.Fields.Count-1
'Response.Write "<TD><A HREF="&Recordset_Obj.Fields(0).value&".htm>"&Recordset_Obj.Fields(i).Value&"</A></TD>"
Response.Write "<TD><A HREF=more.asp?loca="&Recordset_Obj.Fields(0).value&" target=""_blank"">"&Recordset_Obj.Fields(i).Value&"</A></TD>"
Next
Response.Write "</TR>"
Recordset_Obj.MoveNext
If Recordset_Obj.EOF Then Exit For
Next
Response.Write "</TABLE></CENTER>"
End Sub
***************************************************
数据显示完全由asp实现。调用下一页时,可通过参数pagenum重新调用asp程序,即可实现分页浏览。还有一些细节,想想就可以了。
此问题由Zhao Yu等回答。
| |
|
|
| |
|
|