如果用ASP在页面上实现大量数据的显示(可以使用分页)
平时页面加载时如果显示几百条千条数据没什么问题,但如果要一个页面显示几千条甚至上万条的记录时明显会超时,出来的也超慢..一般解决此类大数据是无非是使用分页,即把记录集通过select抽到一个rs里,再利用rs.pagesize,rs.pagecount,rs.absolutepage等来回避在页面上同时抽出并显示所有的数据..
但是我现在的情况是,抽不到一个rs里.
我显示时要先作些处理,把从各个表中抽出来的东西放到一个数组中,然后再显示,举例:
连数据库我用的COM+组件.
我要先从netmdm_hardupdate_record表(硬件变更表)中抽出 dm_nodename(节点),再拿着节点去各个表中抽其它数据,有的抽出来还要处理,要用到的数据边抽边塞到数组里.这样我就无法用rs.XX来直接实现分页了.在几千条上万条数据时,运算时间和显示时间都很长,直接超时,甚至是超时无法显示.这个问题如何解决???
set sys=server.CreateObject("Sys_BaseCom.OAAccess")
strSql = "select dm_nodename,dm_updatedate,changething,changefront,changebehind from netmdm_hardupdate_record where dm_updatedate <='"&search_end&"' and dm_updatedate >='"&search_start&"'"
Set dbrs = sys.Query(strSql)
If dbrs.recordcount <> 0 Then
i=0
reDim pcArray(dbrs.recordcount-1,8)
While Not dbrs.eof
sql_userinventry = "select dm_itemname,dm_systeminf from netmdm_userinventry where dm_nodename='"&dbrs(0)&"'"
Set dbrs_userinventry = sys.Query(sql_userinventry)
If Not dbrs_userinventry.eof Then
While Not dbrs_userinventry.eof
Select Case dbrs_userinventry(0)
Case "PC编号"
pcArray(i,0) = dbrs_userinventry(1)
Case "姓名"
pcArray(i,2) = dbrs_userinventry(1)
Case "部门"
pcArray(i,3) = dbrs_userinventry(1)
Case "位置"
pcArray(i,4) = dbrs_userinventry(1)
End Select
dbrs_userinventry.movenext
wend
End If
sql_hostname = "select dm_systeminf from netmdm_inventry where dm_sysinfname =0x19 and dm_nodename='"&dbrs(0)&"'"
Set dbrs_hostname = sys.Query(sql_hostname)
If Not dbrs_hostname.eof Then
pcArray(i,1) = dbrs_hostname(0)
End if
pcArray(i,5) = left(dbrs(1),10)
pcArray(i,6) = dbrs(2)
If pcArray(i,6) = "CPU" Then
sql_cpu1 = "select Description from CPU_dic where Code ='"&dbrs(3)&"'"
Set dbrs_cpu1 = sys.Query(sql_cpu1)
If Not dbrs_cpu1.eof Then
pcArray(i,7) = dbrs_cpu1(0)
End if
sql_cpu2 = "select Description from CPU_dic where Code ='"&dbrs(4)&"'"
Set dbrs_cpu2 = sys.Query(sql_cpu2)
If Not dbrs_cpu2.eof Then
pcArray(i,8) = dbrs_cpu2(0)
End if
Else
If pcArray(i,6) = "内存" or pcArray(i,6) = "硬盘" Then
If dbrs(3) <> "" Then
pcArray(i,7) = CInt(Int(dbrs(3))/1024) & "G"
Else
pcArray(i,7) = ""
End If
If dbrs(4) <> "" Then
pcArray(i,8) = CInt(Int(dbrs(4))/1024) & "G"
Else
pcArray(i,8) = ""
End If
Else
pcArray(i,7) = dbrs(3)
pcArray(i,8) = dbrs(4)
End If
End if
i = i + 1
dbrs.movenext
Wend
Else
response.write "无硬件变更信息,页面运行终止!"
response.end
End If