下面代码不会报错:
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
看一下SQLCrossTableBuilder说明的最后一部分:同名列的处理:
http://help.foxtable.com/topics/1627.htm
[此贴子已经被作者于2011-7-8 15:11:35编辑过]
sql server也可以用{表名}.列名的方法吗
[此贴子已经被作者于2011-7-8 21:31:14编辑过]
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()
这段代码仍然报错,错误出在第五行,还是请老大看看,没有第五行就可以执行,有第五行就报错
经测试,应该是个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编辑过]
正确代码:
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)
是多余的。
呵呵,帮助也没有教你这样做啊,在帮助中,Build和BuildDataSource从来都是单独使用的。