Rss & SiteMap

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

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

标题:SQLCrossTableBuilder问题续

1楼
唐尸三摆手 发表于:2011/7/8 15:07:00
下面代码不会报错:
Dim b As New SQLCrossTableBuilder("统计表1","aec00000")
b. c
b.AddTable("aec00000","itemcode","aaa00000","code") '添加统计表
'b.AddTable("aaa00000","classcode","aam00000","classcode") '添加统计表
b.HGroups.AddDef("classcode","分类码") '添加水平分组
'b.HGroups.AddDef("classname","分类名称") '添加水平分组
b.VGroups.AddDef("requiredate",DateGroupEnum.none) '添加垂直分组
b.Totals.AddDef("plannum") '添加数量列用于统计
b.VerticalTotal=True
b.Build() '生成统计表
MainTable= Tables("统计表1")
MessageBox.Show("数据分析完毕!","提示",MessageBoxButtons.ok, MessageBoxIcon.Question)
但是,第四行代码如果执行就会报错:见图片
所以问题出在第四行代码:
aaa00000和aam00000通过classcode关联,aam00000包括classcode和classname两列
生成的统计表水平分组为classcode和classname两列,垂直分组为aec00000的requiredate列
统计列为aec00000的plannum列
很早之前版本发布的程序运行正常,不知何故。

图片点击可在新窗口打开查看此主题相关图片如下:screenshot31.jpg
图片点击可在新窗口打开查看
2楼
狐狸爸爸 发表于:2011/7/8 15:11:00

看一下SQLCrossTableBuilder说明的最后一部分:同名列的处理:

http://help.foxtable.com/topics/1627.htm

 

[此贴子已经被作者于2011-7-8 15:11:35编辑过]
3楼
唐尸三摆手 发表于:2011/7/8 21:31:00
sql server也可以用{表名}.列名的方法吗
[此贴子已经被作者于2011-7-8 21:31:14编辑过]
4楼
狐狸爸爸 发表于:2011/7/9 8:03:00
可以的
5楼
唐尸三摆手 发表于:2011/7/9 10:26:00
Dim b As New SQLCrossTableBuilder("a","aec00000")
b.c
b.AddTable("aec00000","itemcode","aaa00000","code") '添加统计表
b.AddTable("aec00000","id_contract","eba00000","id_contract") '添加统计表
b.AddTable("aaa00000","classcode","aam00000","classcode") '添加统计 表
b.HGroups.AddDef("{aaa00000}.classcode","分类码") '添加水平分组
b.VGroups.AddDef("requiredate",DateGroupEnum.none) '添加垂直分组
b.Totals.AddDef("plannum") '添加数量列用于统计
b.VerticalTotal=True
b.Build(True) '生成统计表
Tables("nb_table1").DataSource = b.BuildDataSource()


这段代码仍然报错,错误出在第五行,还是请老大看看,没有第五行就可以执行,有第五行就报错
6楼
狐狸爸爸 发表于:2011/7/9 10:29:00

做个例子上来测试。

7楼
唐尸三摆手 发表于:2011/7/11 8:43:00

经测试,应该是个BUG

 

操作步骤:

1.打开CaseStudy目录下的文件:多表统计.Table

2.命令窗口执行下面的代码(引用自帮助文件)

Dim b As New SQLCrossTableBuilder("统计表1","订单")

b. ConnectionName = "Sale"

b.AddTable("订单","产品ID","产品","产品ID")

b.HGroups.AddDef("{订单}.产品ID")

b.VGroups.Adddef("日期",DateGroupEnum.Year,"")

b.Totals.AddDef("数量")

b.Build

MainTable = Tables("统计表1")

执行结果完全正确。


图片点击可在新窗口打开查看此主题相关图片如下:screenshot35.jpg
图片点击可在新窗口打开查看

3.新增一个独立窗口F01,添加一个表控件table1。

4.现在将上面第二步正确代码的最后两行改为:

b.Build(True)
Forms("F01").Show()
Tables("F01_table1").DataSource = b.BuildDataSource

5.继续执行代码,发现报错


图片点击可在新窗口打开查看此主题相关图片如下:screenshot32.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:screenshot33.jpg
图片点击可在新窗口打开查看
6.使用sql server数据源测试,问题依然如此,由此判断,应该是个BUG

7.程序版本


图片点击可在新窗口打开查看此主题相关图片如下:screenshot31.jpg
图片点击可在新窗口打开查看

 

不过我说了不算的,还要老大你来看下

[此贴子已经被作者于2011-7-11 8:48:44编辑过]
8楼
狐狸爸爸 发表于:2011/7/11 8:49:00

正确代码:

 

Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.C
b.AddTable("订单","产品ID","产品","产品ID")
b.HGroups.AddDef("{订单}.产品ID")
b.VGroups.Adddef("日期",DateGroupEnum.Year,"年")
b.Totals.AddDef("数量")
Forms("窗口1").Show()
Tables("窗口1_Table1").DataSource = b.BuildDataSource

 

也就是说:

b.Build(True)
是多余的。

 

 

 

 

9楼
唐尸三摆手 发表于:2011/7/11 9:01:00
帮助好似没有提到图片点击可在新窗口打开查看这点
10楼
狐狸爸爸 发表于:2011/7/11 9:02:00
呵呵,帮助也没有教你这样做啊,在帮助中,Build和BuildDataSource从来都是单独使用的。
共12 条记录, 每页显示 10 条, 页签: [1] [2]

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

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