热情软件屋

 

在用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等回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio