使用EXCEL中的Listview控件显示Access表中的纪录
Private Sub cmdDelete_Click() '删除指定纪录按钮
Dim i As Integer
For i = Me.ListView1.ListItems.Count To 1 Step -1 '循环选定记录
If Me.ListView1.ListItems(i).Selected Then
Me.ListView1.ListItems.Remove i
End If
Next i
End Sub
Private Sub CmdListView_Click() '调用Listview控件按钮
On Error Resume Next '避免 index of bounds 语句
Application.ScreenUpdating = False '禁止屏幕更新
ListView1.ListItems.Clear '清空纪录
Dim i As Integer
Dim CNN As New ADODB.Connection
Dim RST As New ADODB.Recordset
Dim stpath, strSQL As String
Dim ITM As ListItem
ListView1.ColumnHeaders.Add 1, , "numb", ListView1.Width / 3 '为列表添加表头
ListView1.ColumnHeaders.Add 2, , "name", ListView1.Width / 3, lvwColumnCenter
ListView1.ColumnHeaders.Add 3, , "department", ListView1.Width / 3
ListView1.View = lvwReport '定义显示方式
ListView1.Gridlines = True '显示表格
stpath = ThisWorkbook.Path & Application.PathSeparator & "Staff.mdb"
CNN.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & stpath
strSQL = "SELECT * FROM Staff" '表前后没有 中括号
RST.Open strSQL, CNN, adOpenKeyset, adLockOptimistic, adCmdText
If RST.BOF = False Then
RST.MoveLast
icount = RST.RecordCount '获得纪录数目
Debug.Print icount
RST.MoveFirst
For i = 1 To icount
Set LV = ListView1.ListItems().Add() '添加新行和记录
LV.Text = RST.Fields("numb") '添加第一列数据
LV.SubItems(1) = RST.Fields("name")
LV.SubItems(2) = RST.Fields("department")
RST.MoveNext
Next i
End If
RST.Close
CNN.Close
Application.ScreenUpdating = True
End Sub