Foxtable(狐表)用户栏目专家坐堂 → sqlcrosstablebuilder报错。


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

主题:sqlcrosstablebuilder报错。

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


加好友 发短信
等级:幼狐 帖子:196 积分:2913 威望:0 精华:0 注册:2016/8/31 14:05:00
sqlcrosstablebuilder报错。  发帖心情 Post By:2018/7/6 18:54:00 [只看该作者]

老师您好,原先我用crosstablebuilder编了一个统计功能,运行正常,但是由于后台数据量较大,如果需要全部统计加载进来资源占用较大,于是想改成用sqlcrosstablebuilder进行后台统计。但是将crosstablebuilder转化为sqlcrosstablebuilder之后,程序报错,有两种类型错误。
一是提示,    统计错误,错误原因:标准表达式中数据类型不匹配。
二是提示,    无法找到列    口岸。



现在将两段代码贴出来,请老师指正。

1、原本可以正常使用的crosstablebuilder代码

Dim bd1 As New CrossTableBuilder("统计表1",DataTables("科室数据"))
Dim dt1 As fxDataSource
bd1.Filter = "[商品序号] = '1'"
bd1.HGroups.AddDef("单量口岸类型","口岸") 
bd1.HGroups.AddDef("结关年月")
bd1.VGroups.AddDef("进出口标志","报关单量_{0}") 
bd1.Totals.AddDef("报关单号",AggregateEnum.Count)
dt1 = bd1.BuildDataSource()


Dim bd2 As New CrossTableBuilder("统计表2",DataTables("科室数据"))
Dim dt2 As fxDataSource
bd2.HGroups.AddDef("货值口岸类型","口岸") 
bd2.HGroups.AddDef("结关年月") 
bd2.VGroups.AddDef("进出口标志","货值_{0}") 
bd2.Totals.AddDef("统计美元价")
dt2 = bd2.BuildDataSource()

Dim bd3 As New CrossTableBuilder("统计表3",DataTables("科室数据"))
Dim dt3 As fxDataSource
bd3.Filter = "[商品序号] = '1'"
bd3.HGroups.AddDef("货值口岸类型","口岸") 
bd3.HGroups.AddDef("结关年月")
bd3.VGroups.AddDef("进出口标志","毛重_{0}")
bd3.Totals.AddDef("毛重")
dt3 = bd3.BuildDataSource()

Dim nms As String() = {"口岸","结关年月"} '指定连接列
dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
dt1.Combine(nms,dt3,nms) '将销售统计数据组合到进货统计数据
dt1.Show("统计表1") '显示统计结果



————————————————————————————


2、改造后的sqlcrosstablebuilder代码:

Dim bd1 As New SQLCrossTableBuilder("统计表1","科室数据")
Dim dt1 As fxDataSource
bd1.C
bd1.Filter = "[商品序号] = '1'"
bd1.HGroups.AddDef("单量口岸类型","口岸")
bd1.HGroups.AddDef("结关年月")
bd1.VGroups.AddDef("进出口标志","报关单量_{0}") 
bd1.Totals.AddDef("报关单号",AggregateEnum.Count)
dt1 = bd1.BuildDataSource()


Dim bd2 As New SQLCrossTableBuilder("统计表2","科室数据")
Dim dt2 As fxDataSource
bd2.C
bd2.HGroups.AddDef("货值口岸类型","口岸")
bd2.HGroups.AddDef("结关年月")
bd2.VGroups.AddDef("进出口标志")
bd2.Totals.AddDef("统计美元价")
dt2 = bd2.BuildDataSource()

Dim bd3 As New SQLCrossTableBuilder("统计表3","科室数据")
Dim dt3 As fxDataSource
bd3.C
bd3.Filter = "[商品序号] = '1'"
bd3.HGroups.AddDef("货值口岸类型","口岸") 
bd3.HGroups.AddDef("结关年月")
bd3.VGroups.AddDef("进出口标志","毛重_{0}") 
bd3.Totals.AddDef("毛重")
dt3 = bd3.BuildDataSource()

Dim nms As String() = {"口岸","结关年月"} '指定连接列
dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
dt1.Combine(nms,dt3,nms) '将销售统计数据组合到进货统计数据
dt1.Show("统计表1") '显示统计结果
[此贴子已经被作者于2018/7/6 18:57:46编辑过]

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


加好友 发短信
等级:幼狐 帖子:196 积分:2913 威望:0 精华:0 注册:2016/8/31 14:05:00
  发帖心情 Post By:2018/7/6 18:59:00 [只看该作者]

标红那里是   bd1.C o n n e c t i o n N a m e = "数据库"    
    
但是论坛不知道怎么,只显示前面几个文字。
[此贴子已经被作者于2018/7/6 18:59:41编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/6 20:28:00 [只看该作者]

Dim nms As String() = {"货值口岸类型","结关年月"} '指定连接列

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


加好友 发短信
等级:幼狐 帖子:196 积分:2913 威望:0 精华:0 注册:2016/8/31 14:05:00
  发帖心情 Post By:2018/7/6 21:20:00 [只看该作者]

老师您好,我的bd1里是"单量口岸类型",    bd2和bd3是“货值口岸类型”。。。列名不一样,也可以像您那样写吗?   因为程序在单位电脑里,现在没法试,明天去试试看。。。
那第一个错误呢?为什么crosstablebuilder没问题,换成sqlcross就会提示“统计错误,错误原因:标准表达式中数据类型不匹配。”呢?

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


加好友 发短信
等级:幼狐 帖子:196 积分:2913 威望:0 精华:0 注册:2016/8/31 14:05:00
  发帖心情 Post By:2018/7/6 21:21:00 [只看该作者]

以下是引用有点蓝在2018/7/6 20:28:00的发言:
Dim nms As String() = {"货值口岸类型","结关年月"} '指定连接列


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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/6 21:26:00 [只看该作者]

Dim nms As String() = {"单量口岸类型","结关年月"} '指定连接列
Dim nms2 As String() = {"货值口岸类型","结关年月"} '指定连接列
dt1.Combine(nms,dt2,nms2) '将销售统计数据组合到进货统计数据
dt1.Combine(nms,dt3,nms2) '将销售统计数据组合到进货统计数据

 回到顶部