'(ACCESS)数据表内的数据是这样的:ID  名称  种类     产地
1   樱桃  雷尼     山东
2   樱桃  拉宾斯   山东
3   樱桃  红灯     山东'(如果这些数据是在数据库中打进去的话,就没发现问题.)'树型控件则显示了:
一级为:樱桃
      二级为:雷尼
      二级为:拉宾斯
      二级为:红灯
________________________________________________________________________________________________
'问题是当我录入数据的时候,(这是第一次录入)录入的数据依次是:'ID  名称  种类   产地
                                                           ' 4  番茄         广东'此时树型控件则显示了:
一级为:樱桃
      二级为:雷尼
      二级为:拉宾斯
      二级为:红灯
一级为:番茄
      二级为:空的     '就是这个问题??  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'(第二次录入)如果再录入数据:'ID  名称  种类   产地
                            ' 5  芒果         广东'这时树型控件则显示了:
一级为:樱桃
      二级为:雷尼
      二级为:拉宾斯
      二级为:红灯
一级为:番茄
      二级为:空的 
一级为:芒果                       '这次录入的数据就没有"种类".树型控件就不会显示有二级了...'请教下各位如何解决才能当没有二级数据的时候就只显示一级呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Public Sub addTVW(ByVal TVW As ComctlLib.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  ' Call CloseConn
   If TVW.Nodes.Count > 0 Then '展开第一级
       TVW.Nodes(1).Expanded = True
   End If
End SubPrivate Sub Command1_Click() '保存
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"
   
   Set rs = New Recordset
  rs.Open sql, db, 3, 3
  rs.AddNew
  rs.Fields("名称") = Me.Text1.Text
  rs.Fields("种类") = Me.Text2.Text
  rs.Fields("产地") = Me.Text3.Text  rs.Update
  MsgBox "数据保存成功", 64, "提示"
  Me.Text1 = ""
  Me.Text2 = ""
  Me.Text3 = ""
End Sub

解决方案 »

  1.   

    Try:
       On Error Resume Next   
       Do While Not rs.EOF                       '循环读取数据
          Dim a As String
          a = TVW.Nodes("A" & rs.Fields("名称")).Text
          TVW.Nodes.Add , , a, rs.Fields("名称")
          If len(rs.Fields("种类"))>0 Then TVW.Nodes.Add a, tvwChild, "B" & rs.Fields("种类"), rs.Fields("种类")
          rs.MoveNext
       Loop
      

  2.   

    northwolves兄.我直接修改吗.....这样好像之能显示一级的目录..
      

  3.   


    '再次谢谢northwolves兄'原来得加上这个:
    'If len(rs.Fields("种类"))>0 Then
    '问题已解决了!!!