vbalistview多条件查询(利用ListView控件实现分页显示效果)
vbalistview多条件查询(利用ListView控件实现分页显示效果)图中显示一出一个工作表的数据内容,下面有一些按钮,可以实现数据表上下翻页功能。下图为显示效果:这些在Excel初级应用中,通常不会用到,当然也没有必要用。但是要想做到自由控制数据,那就是一件必然要学会的内容。如果,有一些数据库操作技能,那么对本节的理解,还是十分容易的。
分页显示在网页制作中是一件十分普遍的事情,因为在浏览一些页面的时候总不会都显示在一个页面里。
同样,在Excel工人表中,也会有分页的一中方法,只不过在表中以隐藏方式来实现分页。
本节主要介绍内容为在VBA窗体中实现分页显示数据表。
其中,运用到许多知识,包括对工作表SQL查询,以及ListView控件的添加。
这些在Excel初级应用中,通常不会用到,当然也没有必要用。
但是要想做到自由控制数据,那就是一件必然要学会的内容。
如果,有一些数据库操作技能,那么对本节的理解,还是十分容易的。
下图为显示效果:
图中显示一出一个工作表的数据内容,下面有一些按钮,可以实现数据表上下翻页功能。
这就是说,不需要把所有的工作记录都显示出来,可以一页页地翻看,如果有几百页,那么查找起来还是有一些便捷性的。
下面重点看一下代码:
Private Sub AddListView(Lobj As Object rsPage As Integer)
Dim conn As Object
Dim rs As Object
Dim StrPath As String
Dim StrSql As String
Dim i As Integer j As Integer
Set conn = CreateObject("ADODB.Connection")'新建连接对象
Set rs = CreateObject("ADODB.RecordSet")'新建记录对象
StrPath = ThisWorkbook.FullName
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Extended Properties=Excel 12.0;" _
& "Data Source=" & StrPath'打开连接对象
StrSql = "SElECT * FROM [" & xSheet & "$]"'查询工作表语句
rs.Open StrSql conn 1 1
rs.pagesize = 20 '设置每页显示记录数
rs.absolutepage = rsPage '设置当前页数
Lobj.ColumnHeaders.Clear
For i = 0 To rs.Fields.Count - 1
Lobj.ColumnHeaders.Add rs.Fields(i).Name
Next i
With Lobj
.ListItems.Clear
For i = 1 To rs.pagesize 'rs.RecordCount
If rs.EOF Then Exit For
.ListItems.Add rs.Fields(0).Value
For j = 1 To rs.Fields.Count - 1
If VBA.Len(rs.Fields(j).Value) <> 0 Then
.ListItems(i).SubItems(j) = rs.Fields(j).Value'添加ListView数据
End If
Next j
rs.movenext '下一记录
Next i
End With
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
代码中应用了Recordset 对象,ADO Recordset 对象用于容纳一个来自数据库表的记录集,示例中用来存放工作表的记录集。
还有一个Connection对象,ADO Connection 对象用于创建一个到达某个数据源的开放连接,也就是和数据表建立链接的对象。
至于这两个对象是如何工作的,并不需要了解,因为它已经做好一切,只需要合理地运用对象的方法即可。
以后会专门来介绍关于ADO对象的使用方法。
按钮代码如下所示:
Private Sub 第一页()
Dim x As Integer
If Not VBA.IsNumeric(Me.TextBox1.Value) Then Exit Sub
x = Me.TextBox1.Value
If x = 1 Then
MsgBox "已经是第一页" vbInformation "提示"
Exit Sub
Else
AddListView Me.ListView1 1 '刷新ListView
Me.TextBox1.Value = 1
End If
End Sub
Private Sub 下一页()
Dim x As Integer
If Not VBA.IsNumeric(Me.TextBox1.Value) Then Exit Sub
x = Me.TextBox1.Value
If x = 1 Then
MsgBox "已经是第一页" vbInformation "提示"
Exit Sub
End If
x = x - 1
If x >= 1 And x <= xCount Then
AddListView Me.ListView1 x '刷新ListView
Me.TextBox1.Value = x
Else
Me.TextBox1.Value = 1
End If
End Sub
实现上下翻页功能之后,就不用再为一个工表,全部加载到LIstView页烦恼了。
利用工具实现数据的有规律组合,这就是我们要达到的最简单的目的。
欢迎关注、收藏
---END---