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

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