初识vb数据库开发之实例4(分页显示记录)

前端之家收集整理的这篇文章主要介绍了初识vb数据库开发之实例4(分页显示记录)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

制作特点

(1)利用记录集的分页特性进行记录分页

(2)使用DataGrid 控件的数据绑定功能显示分页后的记录

设计分析

记录集的PageSize属性用于设置或返回一个记录也中可包含的记录个数,其默认值为10.显示当前记录页数据有两个方法

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

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

技术要领

记录集的分页特性

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

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

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

DataGrid控件

DataGrid控件使用代表记录的行和列来显示数据,并允许对数据进行修改,对数据的修改可以自动保存

DataGrid控件绑定到数据源之后,可自动从数据源中获得数据。 DataGrid控件的列与数据源记录集的字段个

数相同,而行数则与记录集的个数相同,DataGrid控件还可以将记录集字段名称自动显示为列的名称

注:使用时可将DataGrid控件的DataSource属性设置为ADOData控件或Recordset对象完成数据绑定。

DataGrid控件为外部ActiveX控件,使用前需要将其添加到工程中,其部件名称为Microsoft DataGrid Control 6.0

MSFlexGrid 控件

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

MSFlexGrid 控件的相关属性

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

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

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

MSFlexGrid 控件为外部ActiveX控件,使用前需要将其添加到工程中,其部件名称为Microsoft MSFlexGrid Control 6.0

操作过程

设计应用程序界面

编写代码

  1. Dim objRs As New Recordset,objCn As New connection,intPage As Integer
  2. '定义一个过程用于显示当前记录页数据。将当前记录页数据复制到一个新的RecordSet对象中,然后将其绑定到DataGrid控件,从而显示当前记录页数据
  3. Public Sub ShowData(ByVal intPage As Integer)
  4. '实现分页显示记录功能
  5. Dim intPageCount As Integer,intRecord As Integer
  6. Dim objDataSource As New Recordset
  7. '创建一个局部Record色图对象保存 objrs当前记录页的数据 For intRecord = 0 To objRs.Fields.Count - 1
  8. objDataSource.Fields.Append objRs.Fields(intRecord).Name,adVarChar,objRs.Fields(intRecord).DefinedSize
  9. Next
  10. objDataSource.Open
  11. objRs.PageSize = Val(TxtPageSize) '重新设置objrs每页显示的记录条数
  12. objRs.AbsolutePage = intPage '重新设置objrs的当前记录页
  13. For intRecord = 1 To objRs.PageSize '将当前记录页中的数据写入objDataSource
  14. objDataSource.addnew
  15. objDataSource!用户名 = objRs!用户名
  16. objDataSource!口令 = objRs!口令
  17. objDataSource!身份 = objRs!身份
  18. objRs.movenext
  19. If objRs.EOF Then Exit For
  20. Next
  21. Set DataGrid1.DataSource = objDataSource
  22. txtPageMsg = intPage & "/" & objRs.pagecount '刷新当期记录页的信息
  23. End Sub
  24. Private Sub cmdNext_Click()
  25. If intPage <> objRs.pagecount Then
  26. intPage = intPage + 1
  27. ShowData (intPage)
  28. End If
  29. End Sub
  30. Private Sub cmdPre_Click()
  31. If intPage <> 1 Then '如果当前页编号不为1,则向前切换
  32. intPage = intPage - 1
  33. ShowData (intPage)
  34. End If
  35. End Sub
  36. Private Sub Form_Load()
  37. Dim strsql As String,strCn As String
  38. TxtPageSize = "5" '设置记录页大小和当前记录页的初始值
  39. intPage = 1
  40. '建立数据库连接 strCn = "provider=microsoft.jet.oledb.4.0;persist security info=false;" & _
  41. "data source=" & "D:\VB98\分页显示记录\实例4.mdb"
  42. objCn.connectionstring = strCn
  43. objCn.Open
  44. With objRs '创建客户端的记录集
  45. .CursorLocation = adUseClient
  46. .CursorType = adOPenStatic
  47. .Open " 系统用户 ",objCn,adOPenStatic,adLockReadOnly
  48. End With
  49. ShowData (intPage) '显示当前记录页数据
  50. End Sub
  51. Private Sub TxtPageSize_KeyPress(KeyAscii As Integer)
  52. Dim bok As Boolean
  53. If KeyAscii = vbKeyReturn And Trim(TxtPageSize) <> "" Then
  54. '如果按的是回车键,并记录页大小不是空,则刷新当前记录
  55. intPage = 1
  56. ShowData (intPage)
  57. ElseIf KeyAscii >= Asc("0") And KeyAscii <= ("9") Then
  58. '检查当前记录的记录页大小是否在有效范围之内
  59. bok = Val(TxtPageSize & Chr(KeyAscii)) < 1 Or Val(TxtPageSize & Chr(KeyAscii)) > 10
  60. If bok Then '如果输入超出范围,则显示相应的提示信息
  61. MsgBox "每页显示记录范围为[1,10]"
  62. KeyAscii = 0 '设置keyascii0取消当前输入数字
  63. End If
  64. End If
  65. End Sub
  66. Public Sub Form_unload(cancle As Integer)
  67. objCn.Close
  68. Set objCn = Nothing
  69. Set objRs = Nothing
  70. End Sub


运行结果

猜你在找的VB相关文章