以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- sqlcrosstablebuilder报错。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121474) |
-- 作者:ufo20085 -- 发布时间:2018/7/6 18:54:00 -- sqlcrosstablebuilder报错。 老师您好,原先我用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 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2018/7/6 20:28:00 -- Dim nms As String() = {"货值口岸类型","结关年月"} \'指定连接列 |
-- 作者:ufo20085 -- 发布时间:2018/7/6 21:20:00 -- 老师您好,我的bd1里是"单量口岸类型", bd2和bd3是“货值口岸类型”。。。列名不一样,也可以像您那样写吗? 因为程序在单位电脑里,现在没法试,明天去试试看。。。 那第一个错误呢?为什么crosstablebuilder没问题,换成sqlcross就会提示“统计错误,错误原因:标准表达式中数据类型不匹配。”呢?
|
-- 作者:ufo20085 -- 发布时间:2018/7/6 21:21:00 -- 以下是引用有点蓝在2018/7/6 20:28:00的发言:
Dim nms As String() = {"货值口岸类型","结关年月"} \'指定连接列 |
-- 作者:有点蓝 -- 发布时间:2018/7/6 21:26:00 -- Dim nms As String() = {"单量口岸类型","结关年月"} \'指定连接列 Dim nms2 As String() = {"货值口岸类型","结关年月"} \'指定连接列 dt1.Combine(nms,dt2,nms2) \'将销售统计数据组合到进货统计数据 dt1.Combine(nms,dt3,nms2) \'将销售统计数据组合到进货统计数据 |