我用Datagrid显示记录集的数据,如下表示:
Sql = "select * from mytable "
rs.CursorLocation = adUseClient
rs.Open Sql, conn, adOpenKeyset, adLockPessimistic '打开数据库
Set DataGrid1.DataSource = rs 现在问题是当数据量很多时,作个分页,一页20至25条数据。这个问题我不知道如何入手?请求大家帮助!!
Sql = "select * from mytable "
rs.CursorLocation = adUseClient
rs.Open Sql, conn, adOpenKeyset, adLockPessimistic '打开数据库
Set DataGrid1.DataSource = rs 现在问题是当数据量很多时,作个分页,一页20至25条数据。这个问题我不知道如何入手?请求大家帮助!!
解决方案 »
- 怪异 vb 中使用CommonDialog1 出现应用程序无法结束的问题
- 求助,dll如何传值给vb?
- 如何读取C:\1.DAT文件的数据
- 存储过程问题?
- 给一个动态删除的代码吧要SQL的谢谢
- 如何实现listview全排选择(原本只能选中一排中的一个).
- 急,哪位会用vb实现一元线性回归,多谢。
- CADVBA,删除多段线重复节点,并生成新数组
- 关于Base64编码的难题,请高手进来帮忙(VB6调用javascript函数示例)
- 请继续赐教:如何将数据库中数值转化成相应信息在报表中打印出来
- 文本框空值问题,只有10分了,不好意思啊
- 如何建立web站点,并在执行许可中设置成“纯脚本和可执行程序”
所以采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.
效果还不错,我加了详细地注释。像pagesize,AbsolutePage的用法可参考msdn
引用ado2.6
Option Explicit
Dim conn As ADODB.Connection
Dim lCurrentPage As LongPrivate Sub cmdNext_Click()
lCurrentPage = lCurrentPage + 1
Call Loadcontrol(lCurrentPage)
End SubPrivate Sub cmdPrevious_Click()
If lCurrentPage > 1 Then
lCurrentPage = lCurrentPage - 1
Call Loadcontrol(lCurrentPage)
End If
End SubPrivate 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)
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!id = adoPrimaryRS!id
objrs!anumber = adoPrimaryRS!anumber
adoPrimaryRS.MoveNext
Next
'绑定
Set DataGrid1.DataSource = objrs
'显示页数
txtPage = lPage & "/" & adoPrimaryRS.PageCount
End SubPrivate Sub Form_Unload(Cancel As Integer)
If Not conn Is Nothing Then
conn.Close
End If
Set conn = Nothing
End Sub
写得很详细了!
我今天要去外地,几天后回来,在等一下,看有无其他方法,我回来后就放分!