Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共16 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
mr725 发表于:2009/7/21 16:37:00
要求按照 科目级别 生成科目名称目录树级别。(外部数据源)条件:在不分列的前提下:

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


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

要对应  形成目录树:

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

[此贴子已经被作者于2009-7-21 16:58:50编辑过]
2楼
wcs 发表于:2009/7/21 17:07:00

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

3楼
mr725 发表于:2009/7/21 17:17:00
以下是引用wcs在2009-7-21 17:07:00的发言:

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

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

4楼
狐狸爸爸 发表于:2009/7/21 17:24:00
思路:

1、用SqlCommand的ExcuteReader方法,执行“Select 科目代码 From {表名}”,得到一个只包括科目代码列的表
2、用代码增加几列,用于保存不同级别的科目。
3、用代码拆分科目代码到对应的列中。
4、根据这个临时表,生成目录树。
5楼
mr725 发表于:2009/7/21 17:28:00
wcs老兄  我想从外部数据源的科目表中(最多也就几千行)直接生成,而不是从凭证明细表中来生成(这样数据行数十万行),速度问题啊~    
6楼
mr725 发表于:2009/7/21 17:31:00
以下是引用狐狸爸爸在2009-7-21 17:24:00的发言:
思路:

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

有空我来试一试···

7楼
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
8楼
mr725 发表于: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()

临时表名没有,接下来怎么增加列? 请指教~
9楼
mr725 发表于: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吗?

10楼
kylin 发表于:2009/7/21 18:35:00
不是三言两语能说得清的

你传个文件来,我给你搞定
共16 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.