问题描述:我编写了一个关于2个系统的接口,其主要功能就是同步这两个系统的组织架构,我从a系统获取部门名,以及其父部门名,然后通过b系统给的接口(也就是一个封装的类的添加部门方法 DeptmanagerObj.AddDept sname子部门, pname父部门)进行添加,往b系统里添加部门有个要求,就是必须从根节点也就是顶级部门开始一层一层的添加,添加子部门时候其父部门必须已经在B系统里,我写了个方法如下
'***********************************************************************
'* 过程名:in_dept
'* 功  能:根据一个部门名,插入它所有的子部门
'* 参  数:
'* 版  本:1.0
'***********************************************************************
Private Sub in_dept(ByVal pname As String)
Dim s_rs As ADODB.Recordset
Dim sname As String
Dim ssql As String
Dim root As String
 
ssql = "select * from v_dept where p_dept='" & pname & "'"  ‘查找所有的的子部门
Set s_rs = v_conn.Execute(ssql)
If s_rs.RecordCount > 0 Then
 
Do While (Not s_rs.EOF)
 sname = s_rs("dept_name")
   Sleep 20
 DeptmanagerObj.AddDept sname, pname  用b系统的类添加部门到b系统
 
 s_rs.MoveNext
 
 Loop
 
  End If
 
End Sub
 
问题:我怎样用这个方法添加完所有的部门,请大家给我设计个算法。

解决方案 »

  1.   

    Private Sub in_dept(ByVal pname As String) 
    Dim s_rs As ADODB.Recordset 
    Dim sname As String 
    Dim ssql As String 
    Dim root As String ssql = "select * from v_dept where p_dept='" & pname & "'"  ‘查找所有的的子部门 
    Set s_rs = v_conn.Execute(ssql) 
    If s_rs.RecordCount > 0 Then Do While (Not s_rs.EOF) 
    sname = s_rs("dept_name") 
      Sleep 20 
    DeptmanagerObj.AddDept sname, pname  用b系统的类添加部门到b系统 in_dept sname '用递归算法
    s_rs.MoveNext Loop   End If End Sub 
      

  2.   

    父部门应该是一个数组或是一个有特征的字符串
    ssql = "select * from v_dept where p_dept='" & pname[i] & "'"  ‘查找所有的的子部门  pname[i] 应该是具体一个部门
    Set s_rs = v_conn.Execute(ssql) 
    If s_rs.RecordCount > 0 Then Do While (Not s_rs.EOF) 
    sname = s_rs("dept_name") 
      Sleep 20 
    DeptmanagerObj.AddDept sname, pname  用b系统的类添加部门到b系统 s_rs.MoveNext Loop   End If 
    然后把上面这个做i的一个循环就可以了