我使用treeview建立树形结构一共有4层,结构如下:
系统
.....发件部门
     ........项目部
             ......张三
             ......李四
     ........办公室
             ......XX
             ......YY
.....收件部门
     ........项目部
             ......张三
             ......李四
     ........办公室
             ......XX
             ......YY
部门名称从tblDept读出,姓名从tblUser读出的
采用的代码如下:
Do Until RsAdo.EOF
Set Dept = trvDept.Nodes.Add(Inbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
strSQL1 = "select TrueName from tblUser where DeptUserIn='" & RsAdo.Fields("DeptUserIn") & "'"
RsAdo1.Open strSQL1, AdoCon, adOpenDynamic, adLockOptimistic
Do Until RsAdo1.EOF
Set UserName = trvDept.Nodes.Add(Dept, tvwChild, , RsAdo1.Fields("TrueName"), 4)
RsAdo1.MoveNext
LoopSet Dept = trvDept.Nodes.Add(Outbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
Do Until RsAdo1.EOF
Set UserName = trvDept.Nodes.Add(Dept, tvwChild, , RsAdo1.Fields("TrueName"), 4)
RsAdo1.MoveNext
Loop
RsAdo.MoveNext
Loop
结果没有显示所有数据,不知道怎么搞了,望各位高手帮助一下。
在线等!

解决方案 »

  1.   

    是不是应该有dim dept as node
      

  2.   

    一看你的代码就有问题。关键在node的key你没有设置。
      

  3.   

    变量没有问题,数据库连接也没有问题。
    node Key是什么意思?如果写成这样的话
    Do Until RsAdo.EOF
    Set Dept = trvDept.Nodes.Add(Inbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
    Set Dept = trvDept.Nodes.Add(Outbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
    RsAdo.MoveNext
    Loop
    会显示一个部门表里的所有数据,但是我还想从另一张表显示对应部门的人员
      

  4.   

    各位,所有的变量和node key都设置好了的哈。希望大家帮帮忙解决一下。谢谢!
      

  5.   

    晕说了半天你还没有明白Key的作用。Do Until rstDept.EOF
        Set nodeY = tvwDept(1).Nodes.Add("Root", tvwChild, "D" & rstDept!depart_id, rstDept!DepartMentName & "[" & rstDept!codeid & "]", 3)
            nodeY.Tag = rstDept!codeid
            
            strSql = "Select * From ClientDepartMentSet_Child  Where Depart_ID='" & rstDept!depart_id & "' Order BY CodeID"
            Set rstEmy = ExecSql1(strSql, strMsg)
            
            Do Until rstEmy.EOF
                Set nodeY = tvwDept(1).Nodes.Add("D" & rstDept!depart_id, tvwChild, "E" & rstEmy!uId, rstEmy!Sname & "[" & rstEmy!codeid & "]", 2)
                nodeY.Tag = rstEmy!codeid
                rstEmy.MoveNext
            Loop
            
            rstDept.MoveNext
        Loop
    你参看这段代码吧。一样是加栽部门和员工。说了你的node的key没有设置。你后面的员工当然不知道加到哪去了
      

  6.   

    楼上的朋友,非常感谢您
    不过不是那个的原因,而是在写循环的时候,当第一次循环后记录已经到最后一条了,所以再次循环的时候,将不会再被执行。
    问题已经解决了。谢谢各位
    代码如下,有需要的朋友可以参考
    Do Until RsAdo.EOF
    Set Dept = trvDept.Nodes.Add(Inbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
    strSQL1 = "select TrueName from tblUser where DeptUserIn='" & RsAdo.Fields("DeptUserIn") & "'"
    RsAdo1.Open strSQL1, AdoCon, adOpenDynamic, adLockOptimistic
    While Not RsAdo1.EOF
    Set TrueName = trvDept.Nodes.Add(Dept, tvwChild, , RsAdo1.Fields("TrueName"), 4)
    RsAdo1.MoveNext
    Wend
    RsAdo1.CloseSet Dept = trvDept.Nodes.Add(Outbox, tvwChild, , RsAdo.Fields("DeptUserIn").Value, 4)
    strSQL1 = "select TrueName from tblUser where DeptUserIn='" & RsAdo.Fields("DeptUserIn") & "'"
    RsAdo1.Open strSQL1, AdoCon, adOpenDynamic, adLockOptimistic
    While Not RsAdo1.EOF
    Set TrueName = trvDept.Nodes.Add(Dept, tvwChild, , RsAdo1.Fields("TrueName"), 4)
    RsAdo1.MoveNext
    Wend
    RsAdo1.Close
    RsAdo.MoveNext
    Loop
      

  7.   

    那我继续,怎样动态判断treeview的选择范围??????/