我用Datagrid显示记录集的数据,如下表示:
Sql = "select * from mytable "
rs.CursorLocation = adUseClient
rs.Open Sql, conn, adOpenKeyset, adLockPessimistic     '打开数据库
Set DataGrid1.DataSource = rs   现在问题是当数据量很多时,作个分页,一页20至25条数据。这个问题我不知道如何入手?请求大家帮助!!

解决方案 »

  1.   

    写了一个,应为datagrid是绑定记录集的
    所以采用了间接的办法,定义另一个记录集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
      

  2.   

    TO:  AKillGodKillBuddha(屠夫)
    写得很详细了!
      

  3.   

    http://blog.csdn.net/online/archive/2004/08/05/66417.aspx
      

  4.   

    Online兄好象出新版本了?````````!!!!!!!!!!
      

  5.   

    online(龙卷风V3.0--笑傲江湖)和AKillGodKillBuddha(屠夫)不是一样的吗? AKillGodKillBuddha(屠夫):
      我今天要去外地,几天后回来,在等一下,看有无其他方法,我回来后就放分!