kmdm                    kmmc    
----------------------- ------------- 
1001                    库存现金 
1002                    银行存款 
  100201                建行 
  100202                美元存款经常户 
  100203                工行 
1012                    其他货币资金 
  101207                保函押金 
    10120701            建行永定路支行 
    10120702            浦发银行永定路支行 
1013                    备用金 
  101301                经理办公室 
  101302                综合计划处 
  101303                财务处根据上面的数据结构(数据结构不能改变),构造一个TreeView 不可以根据KMDM为4位就确认为根节点,1001可是为101,同样他的下级可以为100101或者为1001001这么说吧, 每个级别的代码长度不确定,也就是说一级有可能是4位,也有可能是3位 
同样二级有可能是2位也有可能是3位, 但整个表中的记录是统一的。注数据结构不能改变
该如何做呀,最好有个例子参考一下。

解决方案 »

  1.   

    递归遍历啊!!!!
    你说的这个可以用sql函数来做!!!
      

  2.   


    ALTER  function  dbo.F_ContactAllParentRoleIDByRoleID
    (  
       @RoleID int --参数
    )
    returns int
    as
    begindeclare @ParentRoleID int --变量父ID
    declare @Place int    --变量Place
    set @Place=0
    /*set  @Place = '' */
    --首先根据传入的ClassID获取其父ID,ParentClassID
     SELECT    @ParentRoleID = ParentRoleID  FROM RolePaternity_Table 
        where  RoleID = @RoleID
    /*
      因此下面实现SQL函数的递归 ,注意看
    */
    if (@ParentRoleID <> 0)--如果不是根节点
    begin            
        -- 再将@ParentClassID父ID作为ClassID传入 进行自调用
         set @Place = dbo.F_ContactAllParentPlaceByClassID(@ParentRoleID)+@ParentRoleID
    end
        return  @Place
    end你的修改!!!
      

  3.   

    不可以根据KMDM为4位就确认为根节点,1001可是为101,同样他的下级可以为100101或者为1001001 这么说吧, 每个级别的代码长度不确定,也就是说一级有可能是4位,也有可能是3位 
    同样二级有可能是2位也有可能是3位, --------------------------------------------------------------
    这样定义表也是无语了 ,数据库的数据编码格式也是很重要的,至少可以在编程的时候少要处理很多逻辑根节点也不统一,我只能先说递归遍历