'问题是当删除数据表的这两个字段中某个数值后("名称"  "种类"),如何才能"刷新"树型中的数值呢!!Private Sub Form_Load()
Dim db As Connection
Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\2.mdb" & ";"
  
Dim sql As String
  With Me.ListView1
  ListView1.View = lvwReport
  ListView1.LabelEdit = lvwManual
  ListView1.ColumnHeaders.Add , , "名称", 1600, lvwColumnLeft
  ListView1.ColumnHeaders.Add , , "种类", 2800, lvwColumnLeft
  ListView1.ColumnHeaders.Add , , "产地", 2800, lvwColumnLeft
End Withsql = "select * from 表1"
   
Set rs = New Recordset
rs.Open sql, db, adOpenStatic, adLockOptimisticDo While Not rs.EOF  '循环读取数
Set addLVW = Me.ListView1.ListItems.Add(, , rs!名称)
addLVW.SubItems(1) = rs!种类
addLVW.SubItems(2) = rs!产地
rs.MoveNext
Loop
addTVW TreeView1
End Sub
Public Sub addTVW(ByVal TVW As TreeView)    '添加树视过程
Dim db As Connection
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\2.mdb" & ";" '注意此处的文件名
  
   Dim sql As String
   sql = "select * from 表1"  '注意此处的SQL语句
   
   Set rs = New Recordset
   rs.Open sql, db, adOpenStatic, adLockOptimistic   On Error Resume Next
   Do While Not rs.EOF                       '循环读取数据
      Err.Clear
      Dim a As String
      a = TVW.Nodes("A" & rs.Fields("名称")).Text
      
      If Err.Number <> 0 Then
         TVW.Nodes.Add , , "A" & rs.Fields("名称"), rs.Fields("名称")
         TVW.Nodes.Add "A" & rs.Fields("名称"), tvwChild, "B" & rs.Fields("种类"), rs.Fields("种类")
         Err.Clear
      Else
         TVW.Nodes.Add "A" & rs.Fields("名称"), tvwChild, "B" & rs.Fields("种类"), rs.Fields("种类")
      End If      rs.MoveNext
   Loop
End Sub

解决方案 »

  1.   

    1. 如果你不知道你删除的记录是那一条或几条
       
       将 ListView 与 TreeView 先清空,再运行上面的加载程序一次.2.如果你知道要删除的是那一条或几条记录.用以下语句:(已知道删除记录的名称,种类)
       
       TreeView1.Nodes.Remove ("B" & rs.Fields("种类") '将种类删除
       'rs.Fields("种类") 是已知的.
      
      Dim nNode As Node
       Set nNode = TreeView1.Nodes("A" & rs.Fields("名称").Child
       
       if nNode Is Nothing then
          '如果名称里成是空的了.
        TreeView1.Nodes.Remove ("A" & rs.Fields("名称") '将名称也删除
       end if
       'rs.Fields("名称") 是已知的.