红皮书再总结——实例四
实例4 分页显示记录
(一)制作特点:
第一、利用记录集的分页特性进行记录分页
第二、使用DataGrid控件的数据绑定功能显示分页后的记录
(二)设计分析:
显示当前记录页数据有两种方法:
方法一、DataGrid控件:该控件会显示记录集中的全部数据,所以不能直接将分页的记录集绑定到DataGrid控件。可将当前记录页中的记录复制到一个新的记录集中,再将其绑定到DataGrid控件,便可显示当前记录页数据。√
方法二、MSFlexGrid控件:该控件可在设计时将其绑定到Data控件。在运行时,则可通过设置控件的TextMatrix属性来显示数据。
(三)技术要领:
1.记录集的分页特性
2.DataGrid控件
用于绑定数据源,从数据源获得数据。控件列为数据源记录集的字段,控件行为数据源记录集的记录。
将该控件DataSource属性设置为ADO Data 控件或RecordSet对象,以完成数据绑定。
3.MSFlexGrid控件
(四)操作过程:
(1)设计窗体
①工程——部件——Microsoft DataGrid Control 6.0(OLEDB)
②三个标签框+两个文本框+两个命令按钮+DataGrid控件
(2)编写代码
①实现分页显示记录功能
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
objDataSource.Open '打开局部Recordset对象
objRs.PageSize = Val(txtPageSize) '重新设置objRs每页显示的记录条数
objRs.AbsolutePage = intPage '重新设置objRs的当前记录页
For intRecord = 1 To objRs.PageSize '将当前记录页中数据写入objDataSource
objDataSource.AddNew
objDataSource!用户名 = objRs!用户名 '感叹号“!”常用于当一个控件作为一个特性访问的情况
objDataSource!口令 = objRs!口令
objRs.MoveNext
If objRs.EOF Then Exit For '如果objRs在记录集的尾处则退出
Next
Set DataGrid1.DataSource = objDataSource '设置为数据网格的数据源
txtPageMsg = intPage & "/" & objRs.PageCount '刷新当前记录页信息
End Sub
②前一页按钮
Private Sub cmdPre_Click()
If intPage <> 1 Then '修改当前页编号,向前切换记录页
intPage = intPage - 1
ShowData (intPage)
End If
End Sub
③后一页按钮
Private Sub cmdNext_Click()
If intPage <> objRs.PageCount Then '修改当前页编号,向后切换记录页
intPage = intPage + 1
ShowData (intPage)
End If
End Sub
③建立数据库连接
strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;" & "Data Source=" & "C:\Users\TXG\Desktop\实例1.mdb"
objCn.ConnectionString = strCn
objCn.Open
④关闭数据库连接,释放Recordset对象objRs和Connection对象objCn
Private Sub Form_Unload(Cancel As Integer)
objCn.Close
Set objCn = Nothing
Set objRs = Nothing
End Sub
(五)连接数据库方式:
使用ADO Data 控件快速创建数据库连接,不用编写代码即可访问数据库。