VB怎样才能实现高效分页!

prominent 2006-02-16 08:05:06
由于最近在写一个小的程序,,,
但数据量很大。
估计有10W条,有没有什么好的分页方法呀!
程序是在查询时将Rs绑定到DataGrid控件。
望高手指点一下呀。谢了呀。。。
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxf_gd 2006-02-21
  • 打赏
  • 举报
回复
如果只是显示,可以采用报表的形式嘛。用快乐报表(www.happyreport.com)就轻松搞定啦!
vbman2003 2006-02-17
  • 打赏
  • 举报
回复
用SQL语句,这样最快:
select top 30 * from tb where id between 101 and 130 order by id
vansoft 2006-02-17
  • 打赏
  • 举报
回复
10萬條每次分頁都要去取出來再顯示,
是不是有點累啊?

可以通過一個數字類型的列和TOP來用SQL語句取第幾條到第幾條。
prominent 2006-02-16
  • 打赏
  • 举报
回复
谢了...
楼上的....
faysky2 2006-02-16
  • 打赏
  • 举报
回复
参考(DataGrid分页):

一个datagrid,一个文本框txtPage,两个按钮cmdPrevious,cmdNext
窗体代码
Option Explicit

Dim conn As ADODB.Connection

Dim lCurrentPage As Long


Private Sub cmdNext_Click()

lCurrentPage = lCurrentPage + 1

Call Loadcontrol(lCurrentPage)

End Sub




Private Sub cmdPrevious_Click()

If lCurrentPage > 1 Then

lCurrentPage = lCurrentPage - 1

Call Loadcontrol(lCurrentPage)

End If

End Sub



Private Sub Form_Load()



Set conn = New ADODB.Connection

conn.CursorLocation = adUseClient

conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;"



lCurrentPage = 1

Call Loadcontrol(lCurrentPage)



End Sub

Private Sub Loadcontrol(lPage As Long)
On Error Resume Next

Dim adoPrimaryRS As ADODB.Recordset

Dim lPageCount As Long

Dim nPageSize As Integer

Dim lCount As Long



'每页显示的纪录

nPageSize = 10

Set adoPrimaryRS = New ADODB.Recordset

adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic



adoPrimaryRS.PageSize = nPageSize

'页数

lPageCount = adoPrimaryRS.PageCount

If lCurrentPage > lPageCount Then

lCurrentPage = lPageCount

End If



adoPrimaryRS.AbsolutePage = lCurrentPage

'定义另一个记录集

Dim objrs As New ADODB.Recordset

'添加字段名称

For lCount = 0 To adoPrimaryRS.Fields.Count - 1

objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize

Next

'打开记录集

objrs.Open

'将指定记录数循环添加到objrs中

For lCount = 1 To nPageSize

objrs.AddNew
objrs.Fields("id") = adoPrimaryRS.Fields("id")
objrs.Fields("anumber") = adoPrimaryRS.Fields("anumber")
adoPrimaryRS.MoveNext

Next

'绑定

Set DataGrid1.DataSource = objrs



'在文本框显示页数

txtPage = lPage & "/" & adoPrimaryRS.PageCount

End Sub



Private Sub Form_Unload(Cancel As Integer)

If Not conn Is Nothing Then

conn.Close

End If

Set conn = Nothing

End Sub

'文本框中输入页数,回车跳转到指定位置

Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer)

lCurrentPage = Val(txtPage.Text)

Call Loadcontrol(lCurrentPage)

End Sub



prominent 2006-02-16
  • 打赏
  • 举报
回复
所以就要用到分页的呀...
我是想问问哪一种分页方法比较高效...
否则,查询数据库肯定会死人的...
路过的看一下撒呀..
小弟在此谢过了..在线等...
frankwong 2006-02-16
  • 打赏
  • 举报
回复
一个网格要显示这么多条记录干嘛?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧