使用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