最近修改一个老软件,不知道怎么去处理VB了
表里:
deptid deptname re
01     财务部   Null
02     生产部   Null
0201   1组      Null
020101 1线      Null
0202   2组      Null
020201 A拉      Null
03     研发部门 Null本来是没有那么多小部门的.后来搞了小部门很多,需要修改.我一拿到代码,看了是VB 而且还是单个Treeview 没办法 请大家帮忙看看  TreeView1.LineStyle = tvwTreeLines ''在兄弟节点和父节点之间显示线
  TreeView1.ImageList = ImageList1 ''链接图像列
  TreeView1.Style = tvwTreelinesPlusMinusPictureText'添加根节点
Set nodx = TreeView1.Nodes.Add(, , "A", "全公司", 3)
  For I = 1 To TreeView1.Nodes.Count
    TreeView1.Nodes(I).Expanded = True '展开所有节点
  Next I
  
  '***添加子节点***
Call OpenCn'连接数据库
sql = "select * from depart"
openRs (sql)
If rs.RecordCount <> 0 Then
    rs.MoveFirst
    Do While rs.EOF = False
        
        bid = "KEY" & rs.Fields("deptid")
        nbid = "KEY" & Left(rs.Fields("deptid"), 2)
        bna = rs.Fields("deptname")
        
      If  Then                                    <------------------就是这个条件不知道用什么好处理了
      
        Set nodx = TreeView1.Nodes.Add("A", tvwChild, bid, bna, 2)'第1层
       Else
        Set nodx = TreeView1.Nodes.Add(nbid, tvwChild, "C" & bid, bna, 2, 3)'第2层....
       
       End If
    rs.MoveNext
    Loop
End If
cloRs'关闭rs
cloCn'关闭连接

解决方案 »

  1.   

    根据deptid判吧。if len(cstr(rs.Fields("deptid")))<=2 then
      

  2.   

    表结构有问题,最好增加一个字段用来表示层次关系。
    既然没有,姑且这样吧 if bna like "*部*" then
      

  3.   

    以前随便写的一个DEMO,希望对你有所帮助Public Sub InitOrg()
        Dim strConnectionString As String
        strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\db.mdb;" & _
                              "Persist Security Info=False;Jet OLEDB:Database Password=atl;"
                              
        cn.ConnectionString = strConnectionString
        If cn.State = adStateOpen Then cn.Close
        cn.Open    tvOrg.Nodes.Clear
        tvOrg.LabelEdit = tvwAutomatic
        With rs
            .ActiveConnection = cn
            .LockType = adLockOptimistic
            .CursorType = adOpenStatic
            .Open "select * from tbOrg where len(KEY)=3 order by Name"        tvOrg.Nodes.Add , , Trim(!Key) & "", Trim(!Name) & ""
            .Close        .Open "select * from tbOrg where len(KEY)=5 order by Name"
            While Not .EOF
                tvOrg.Nodes.Add Left$(Trim(!Key), 3) & "", tvwChild, Trim(!Key) & "", Trim(!Name) & ""
                .MoveNext
            Wend        .Close
            .Open "select * from tbOrg where len(KEY)=7 order by Name"
            While Not .EOF
                tvOrg.Nodes.Add Left$(Trim(!Key), 5) & "", tvwChild, Trim(!Key) & "", Trim(!Name) & ""
                .MoveNext
            Wend    End With
        rs.Close
        cn.Close    For Each Node In tvOrg.Nodes
            Node.Expanded = True
        Next
     
    End Sub
      

  4.   

    根据deptid的长度来判断咯deptid长度为2的都是第一层节点,长度为4的都是第二层节点,长度为6的都是第三层节点,长度为8的都是第四层节点…………然后再根据deptid前几位来判断他的父节点是谁咯,比如02是第一层节点,他的父节点就是根节点,0201是二层节点,他的上层节点就是02咯,020101是三层节点,他的上层节点是0201咯,…………剩下的代码你自己写吧,偶有快一年没写代码了!