DEMO:分页显示记录

Ⅰ、制作特点:

①利用记录集的分页特性进行记录分页

②使用DataGrid控件的数据绑定功能显示分页的记录

Ⅱ、设计分析:

记录集的PageSize属性用于设置或返回一个记录页中可包含的记录个数,其默认值为10.

显示当前记录页数据有两种方法:

方法①:使用DataGrid控件。这个控件会显示记录集中的全部数据,所以不能直接将分页的记录集绑定到DataGrid控件。可将当前记录页中的记录复制到一个新的记录集中,再将其绑定到DataGrid控件,便可显示当前记录页数据。

方法②使用MSFlexGrid控件。MSFlexGrid控件可在设计时将其绑定到Data控件。在运行时,则可通过设置控件的TextMatrix属性来显示数据。

Ⅲ、设计要领

①记录集的分页属性分别如下:

GageSize属性:设置或返回一个记录页中可包含的记录个数,其默认值为10

PageCount属性:返回一个记录集的记录页总数

AbsolutePage属性:设置或返回当前记录页编号

② DataGrid控件

此控件使用代表记录的行和列来显示数据,并允许对数据进行修改,对数据的修改可自动保存。DataGrid控件绑定到数据源之后,可自动从数据源获得数据。DataGrid控件的列与数据源记录集的字段个数相同,而行数则与记录集的记录个数相同。DataGrid控件还可将记录集字段名称自动显示为列的名称

③MSFlexGrid控件

MSFlexGrid以行方式显示数据,MSFlexGrid控件可在设计时将其绑定到Data控件。在运行是,如果设置控件的datasource属性则会出错,此时可通过设置控件的TextMatrix属性来显示数据

MSFlexGrid控件的相关属性:

cols属性:设置和返回控件的列数

Rows属性:设置和返回控件的行数

TextMatrix属性:设置和返回控件任意单元格的文本内容。

Ⅳ、设计过程:

①设计界面:

F 

② 功能代码:

Option Explicit

Dim ObjRs As New Recordset
Dim ObjCn As New Connection
Dim IntPage As Integer

Private Sub CmdNext_Click()
    If IntPage <> ObjRs.PageCount Then
        IntPage = IntPage + 1
        ShowData (IntPage)
    End If
End Sub

Private Sub CmdPre_Click()
    If IntPage <> 1 Then
        IntPage = IntPage - 1
        ShowData (IntPage)
    End If
End Sub

Private Sub Form_Load()
    Dim StrSQL As String, StrCn As String
    TxtPageSize = "5"
    IntPage = 1
    '建立数据库连接
    StrCn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & _
            "Data Source=" & App.Path & "/db1.mdb"
    ObjCn.ConnectionString = StrCn
    ObjCn.Open
    With ObjRs
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .Open "系统用户", ObjCn, adOpenStatic, adLockReadOnly
    End With
    ShowData (IntPage)
End Sub

Public Sub ShowData(ByVal IntPage As Integer)
    '实现分页显示记录功能
    Dim IntPageCount As Integer, IntRecord As Integer
    Dim ObjDataSource As New Recordset
    '创建一个局部Recordset对象保存ObjRs当前记录页数据
    For IntRecord = 0 To ObjRs.Fields.Count - 1
        ObjDataSource.Fields.Append ObjRs.Fields(IntRecord).Name, adVarChar, ObjRs.Fields(IntRecord).DefinedSize
    Next IntRecord
    ObjDataSource.Open
    ObjRs.PageSize = Val(TxtPageSize)
    ObjRs.AbsolutePage = IntPage
    For IntRecord = 1 To ObjRs.PageSize
        ObjDataSource.AddNew
        ObjDataSource!用户名 = ObjRs!用户名
        ObjDataSource!口令 = ObjRs!口令
        ObjDataSource!身份 = ObjRs!身份
        ObjRs.MoveNext
        If ObjRs.EOF Then
            Exit For
        End If
    Next
    Set DataGrid1.DataSource = ObjDataSource
    TxtPageMsg = IntPage & "/" & ObjRs.PageCount
End Sub

Private Sub Form_Unload(Cancel As Integer)
    ObjCn.Close
    Set ObjCn = Nothing
    Set ObjRs = Nothing
End Sub

Private Sub TxtPageSize_KeyPress(KeyAscii As Integer)
    Dim bOK As Boolean
    If KeyAscii = vbKeyReturn And Trim(TxtPageSize) <> "" Then
        '如果按的是回车键,并且记录页大小不是空值,则刷新当前记录页
        IntPage = 1
        ShowData (IntPage)
    ElseIf KeyAscii >= Asc("0") And KeyAscii <= asc="" then="">        '检验当前设置的记录页的大小是否在有效范围之内
        bOK = Val(TxtPageSize & Chr(KeyAscii)) < 1 Or Val(TxtPageSize & Chr(KeyAscii)) > 10
        If bOK Then
            MsgBox "每页显示记录范围为[1,10]"
            KeyAscii = 0
        End If
    End If
End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值