以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sqlcrosstablebuilder报错。  (http://foxtable.net/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) \'将销售统计数据组合到进货统计数据