以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 查询结果做交叉统计报错. (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=143006) |
-- 作者:fox-man -- 发布时间:2019/11/11 17:17:00 -- 查询结果做交叉统计报错. 事由说明:最近更新FT版本,由原先2019.04.12版更新为2019.10.12.1后报错,2019.04.12版时正常,请问这是版本升级的造成的吗?怎么处理呢? ************************ FT代码: \'\'以下代码执行正常 Dim q As new QueryBuilder q.C q.TableName = "tablea" q.SelectString = "S e lect name,datepart(mm,date)month,sum(isnull (amount,0))amount f rom table1 group by name,datepart(mm,date)" q.Build \'\'以下统计是报错 Dim g As New CrossTableBuilder("tablea", DataTables("tablea")) g.HGroups.AddDef("name") g.VGroups.AddDef("month") g.Totals.AddDef("amount") g.HorizontalTotal = True g.VerticalTotal = True g.Build() MainTable = Tables("tablea") ********************** 错误详情: .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2019.10.12.1 错误所在事件: 详细错误信息: Object reference not set to an instance of an object. [此贴子已经被作者于2019/11/11 17:18:32编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/11/11 17:27:00 -- 可能名称重复了 Dim g As New CrossTableBuilder("tablea2", DataTables("tablea"))
g.HGroups.AddDef("name") g.VGroups.AddDef("month") g.Totals.AddDef("amount") g.HorizontalTotal = True g.VerticalTotal = True g.Build() MainTable = Tables("tablea2") |
-- 作者:fox-man -- 发布时间:2019/11/11 17:35:00 -- 以前版本是正常的,最近没做代码调整,只是版本更新后重新发布过之后就出现这个问题了. |
-- 作者:有点蓝 -- 发布时间:2019/11/11 17:41:00 -- 改为不同的名称测试还有没有问题? |
-- 作者:fox-man -- 发布时间:2019/11/12 9:08:00 -- 现在改为不同的表名没有问题,但在不改表名的情况下怎么实现呢? |
-- 作者:有点蓝 -- 发布时间:2019/11/12 9:18:00 -- 必须要改名啊,两个表不能有重复的名称 |
-- 作者:fox-man -- 发布时间:2019/11/12 9:24:00 -- 以下是引用有点蓝在2019/11/12 9:18:00的发言: 必须要改名啊,两个表不能有重复的名称 这项目是以两年前发布的,那时候表名是一样的,并没有报错.最近突然发现报错了,不知道是什么原因造成的.
|
-- 作者:有点蓝 -- 发布时间:2019/11/12 9:51:00 -- 这个我没有办法理解。可能和表格释放内存的方式有关吧,旧版本有内存泄漏的bug,新版本改进了 但是如果像这种同名的,也就是之前生成的同名查询表会被覆盖掉,这种情况完全没有必要先生成一个查询表啊,直接使用sql生成统计表就行了:http://www.foxtable.com/webhelp/topics/2307.htm dim sql as string = "S e lect name,datepart(mm,date)month,sum(isnull (amount,0))amount f rom table1 group by name,datepart(mm,date)" Dim g As New CrossTableBuilder("tablea", sql,"数据源名称")
g.HGroups.AddDef("name") g.VGroups.AddDef("month") g.Totals.AddDef("amount") g.HorizontalTotal = True g.VerticalTotal = True g.Build() MainTable = Tables("tablea") |
-- 作者:fox-man -- 发布时间:2019/11/12 11:59:00 -- 以下是引用有点蓝在2019/11/12 9:51:00的发言:
这个我没有办法理解。可能和表格释放内存的方式有关吧,旧版本有内存泄漏的bug,新版本改进了 但是如果像这种同名的,也就是之前生成的同名查询表会被覆盖掉,这种情况完全没有必要先生成一个查询表啊,直接使用sql生成统计表就行了:http://www.foxtable.com/webhelp/topics/2307.htm dim sql as string = "S e lect name,datepart(mm,date)month,sum(isnull (amount,0))amount f rom table1 group by name,datepart(mm,date)" Dim g As New CrossTableBuilder("tablea", sql,"数据源名称") g.HGroups.AddDef("name") g.VGroups.AddDef("month") g.Totals.AddDef("amount") g.HorizontalTotal = True g.VerticalTotal = True g.Build() MainTable = Tables("tablea") 谢谢!
|