Office中国论坛/Access中国论坛

标题: Access子窗体翻页功能 [打印本页]

作者: mclly2000    时间: 2013-4-16 17:34
标题: Access子窗体翻页功能
Access中A窗体的子窗体数据源来自于ADO记录集(后台是sqlserver),由于数据量很大,都有几千条,想每次显示100条,想看101-200条可点击翻页,不知如何实现类似于下图所示:

作者: 网络蜘蛛    时间: 2013-4-17 11:52
本帖最后由 网络蜘蛛 于 2013-4-17 11:55 编辑

那个ADO记录集主键降序,新记录集rst1,rst2
rst1=ADO记录集
rst2=rst1升序的前100条记录,子窗体数据源=rst2。点击翻页
rst1=ADO记录集前N条记录,N=rst记录集数-100X,X是个计数器,计下点了几次翻页。
rst2=rst1升序的前100条记录,子窗体数据源=rst2。
随便写的,不知道是不是这个意思?
作者: xjb_test    时间: 2013-4-17 15:57
{:soso_e100:}
作者: chaosheng    时间: 2013-4-17 22:51
ADO 2.5 范例  

AbsolutePage、PageCount 和 PageSize 属性范例 (VB)
'BeginAbsolutePageVB

    'To integrate this code
    'replace the data source and initial catalog values
    'in the connection string

Public Sub Main()
    On Error GoTo ErrorHandler
  
    'recordset and connection variables
    Dim rstEmployees As ADODB.Recordset
    Dim Cnxn As ADODB.Connection
    Dim strCnxn As String
    Dim strSQL As String
        'record variables
    Dim strMessage As String
    Dim intPage As Integer
    Dim intPageCount As Integer
    Dim intRecord As Integer

    'Open connection
    Set Cnxn = New ADODB.Connection
    strCnxn = "Provider='sqloledb';Data Source='MySqlServer';" & _
        "Initial Catalog='Pubs';Integrated Security='SSPI';"
    Cnxn.Open strCnxn
   
    ' Open employee recordset
    ' Use client cursor to enable AbsolutePosition property
    Set rstEmployees = New ADODB.Recordset
    strSQL = "employee"
    rstEmployees.Open strSQL, strCnxn, adUseClient, adLockReadOnly, adCmdTable
   
    ' Display names and hire dates, five records at a time
    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
   
    ' clean up
    rstEmployees.Close
    Cnxn.Close
    Set rstEmployees = Nothing
    Set Cnxn = Nothing
    Exit Sub
   
ErrorHandler:
    ' clean up
    If Not rstEmployees Is Nothing Then
        If rstEmployees.State = adStateOpen Then rstEmployees.Close
    End If
    Set rstEmployees = Nothing
   
    If Not Cnxn Is Nothing Then
        If Cnxn.State = adStateOpen Then Cnxn.Close
    End If
    Set Cnxn = Nothing
   
    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
End Sub
'EndAbsolutePageVB

作者: mclly2000    时间: 2013-4-18 12:30
chaosheng 发表于 2013-4-17 22:51
ADO 2.5 范例  

AbsolutePage、PageCount 和 PageSize 属性范例 (VB)

可否上实例,谢谢
作者: chaosheng    时间: 2013-4-18 13:57
mclly2000 发表于 2013-4-18 12:30
可否上实例,谢谢

这个我认为c/s的一般不需这样做。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3