Foxtable(狐表)用户栏目专家坐堂 → [求助] 这样的 列形式 如何生成【目录树】


  共有17100人关注过本帖树形打印复制链接

主题:[求助] 这样的 列形式 如何生成【目录树】

帅哥哟,离线,有人找我吗?
mr725
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
[求助] 这样的 列形式 如何生成【目录树】  发帖心情 Post By:2009/7/21 16:37:00 [只看该作者]

要求按照 科目级别 生成科目名称目录树级别。(外部数据源)条件:在不分列的前提下:

此主题相关图片如下:mls-+.gif
按此在新窗口浏览图片


科目代码     科目名称     科目级别
1002          银行存款        1
1002.03       招商银行      2

要对应  形成目录树:

+银行存款                      ......... 1级
     -招商银行                 ......... 2级
     -.........                ......... 2级
     -..........               ......... 2级

[此贴子已经被作者于2009-7-21 16:58:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/7/21 17:07:00 [只看该作者]

把科目代码分为这几列:
一级科目代码、二级科目代码、三级科目代码....
1002             01                01


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/21 17:17:00 [只看该作者]

以下是引用wcs在2009-7-21 17:07:00的发言:

把科目代码分为这几列:
一级科目代码、二级科目代码、三级科目代码....
1002             01                01

分列后我知道怎么做的, 只是要有五极科目的话,分列挺影响速度,每次都要引入外部数据表后才能分列、计算赋值。另外明细科目都在不断增加,特别是核算项目、往来都是经常变动(一楼没有项目和往来)。 
如果能直接从外部数据源生成目录树,那会简单的多啊~  就不必每次引入外部数据表再来生成目录树了。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/21 17:24:00 [只看该作者]

思路:

1、用SqlCommand的ExcuteReader方法,执行“Select 科目代码 From {表名}”,得到一个只包括科目代码列的表
2、用代码增加几列,用于保存不同级别的科目。
3、用代码拆分科目代码到对应的列中。
4、根据这个临时表,生成目录树。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/21 17:28:00 [只看该作者]

wcs老兄  我想从外部数据源的科目表中(最多也就几千行)直接生成,而不是从凭证明细表中来生成(这样数据行数十万行),速度问题啊~    

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/21 17:31:00 [只看该作者]

以下是引用狐狸爸爸在2009-7-21 17:24:00的发言:
思路:

1、用SqlCommand的ExcuteReader方法,执行“Select 科目代码 From {表名}”,得到一个只包括科目代码列的表
2、用代码增加几列,用于保存不同级别的科目。
3、用代码拆分科目代码到对应的列中。
4、根据这个临时表,生成目录树。

有空我来试一试···


 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/7/21 17:56:00 [只看该作者]

这个可以一步到位,使用存储过程,呵呵
 

字段FKMCode,FKMName,FKMLevel(科目代码,科目名称,科目级别) 表名 TB_KM,构造如下临时数据表

Select a.FKMCode1,FKMName1,a.FKMCode2,FKMName2,FKMCode3, FKMName3

from

(

  Select a.FKMCode1,FKMName1,FKMCode2,FKMName2

  from

     (

     Select FKMCode FKMCode1,FKMName FKMName1

     from TB_KM where FKMLevel=1

     )a

  Left Join

     (

     Select substring(FKMCode,1,4) FKMCode1,

          FKMCode FKMCode2,FKMName FKMName2,FKMLevel FKMLevel2

      from TB_KM where FKMLevel=2

     )b

  on a.FKMCode1=b.FKMCode1

)a

left join

(

  Select substring(FKMCode,1,4) FKMCode1,substring(FKMCode,1,7) FKMCode2,

        FKMCode FKMCode3,FKMName FKMName3,FKMLevel FKMLevel3

  from TB_KM where FKMLevel=3

)b

on a.FKMCode1=b.FKMCode1 and a.FKMCode2=b.FKMCode2

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/21 18:07:00 [只看该作者]

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT DISTINCT FNumber,FFullName From {t_Account}"
dt = cmd.ExecuteReader()

临时表名没有,接下来怎么增加列? 请指教~

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/21 18:14:00 [只看该作者]

以下是引用kylin在2009-7-21 17:56:00的发言:
这个可以一步到位,使用存储过程,呵呵
 

字段FKMCode,FKMName,FKMLevel(科目代码,科目名称,科目级别) 表名 TB_KM,构造如下临时数据表

Select a.FKMCode1,FKMName1,a.FKMCode2,FKMName2,FKMCode3, FKMName3

from

(

  Select a.FKMCode1,FKMName1,FKMCode2,FKMName2

  from

     (

     Select FKMCode FKMCode1,FKMName FKMName1

     from TB_KM where FKMLevel=1

     )a

  Left Join

     (

     Select substring(FKMCode,1,4) FKMCode1,

          FKMCode FKMCode2,FKMName FKMName2,FKMLevel FKMLevel2

      from TB_KM where FKMLevel=2

     )b

  on a.FKMCode1=b.FKMCode1

)a

left join

(

  Select substring(FKMCode,1,4) FKMCode1,substring(FKMCode,1,7) FKMCode2,

        FKMCode FKMCode3,FKMName FKMName3,FKMLevel FKMLevel3

  from TB_KM where FKMLevel=3

)b

on a.FKMCode1=b.FKMCode1 and a.FKMCode2=b.FKMCode2

哈哈~  看不懂啊···  直接放到窗口的afterload吗?


 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/7/21 18:35:00 [只看该作者]

不是三言两语能说得清的

你传个文件来,我给你搞定

 回到顶部
总数 16 1 2 下一页