使用EXCEL中的Listview控件顯示Access表中的紀錄

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章