以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组统计与交叉统计的查寻条件相同,但结果不同  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184749)

--  作者:onlinech
--  发布时间:2022/12/28 21:39:00
--  分组统计与交叉统计的查寻条件相同,但结果不同
分组统计与交叉统计的查寻条件相同,但交叉统计能统计出结果,分组统计只有列,没有行(行数为0)
代码如下:
Dim filter As String
filter = "( [发货单位] <> \'\' or [收货单位] <> \'\' ) and [更新时间] >= \'" & Date.Today.AddDays( - 3) & "\'"

Dim xstj As New CrossTableBuilder("临时统计1", DataTables("称重信息"))
xstj.HGroups.AddDef("更新时间", DateGroupEnum.Hour, "时")
xstj.VGroups.AddDef("更新时间", DateGroupEnum.Day, "{0}日")
xstj.Totals.AddDef("净重", "净重")
xstj.OrderByTotal = True
xstj.Filter = filter
xstj.FromServer = True
xstj.Build()

Dim lstj As New GroupTableBuilder("临时统计", DataTables("称重信息"))
lstj.Groups.AddDef("更新时间", DateGroupEnum.Year, "年")
lstj.Groups.AddDef("更新时间", "月")
lstj.Groups.AddDef("更新时间", DateGroupEnum.Day, "日")
lstj.Groups.AddDef("更新时间", DateGroupEnum.Hour, "时")
lstj.Totals.AddDef("净重")
lstj.Filter = filter
lstj.Build()
MainTable = Tables("临时统计")

--  作者:有点蓝
--  发布时间:2022/12/29 8:53:00
--  
这样试试
filter = "( [发货单位] <> \'\' or [收货单位] <> \'\' or [发货单位] is not null or [收货单位]  is not null) and [更新时间] >= \'" & Date.Today.AddDays( - 3) & "\'"
--  作者:onlinech
--  发布时间:2022/12/29 9:37:00
--  
还是一样的情况,未解决
filter = "[更新时间] >= \'" & Date.Today.AddDays( - 3) & "\'"

问题应该是这条代码,但为什么交叉统计的有数据,分组统计的没有数据呢?


--  作者:有点蓝
--  发布时间:2022/12/29 9:41:00
--  
filter = "[更新时间] >= #" & Date.Today.AddDays( - 3) & "#"
--  作者:onlinech
--  发布时间:2022/12/29 10:47:00
--  
现在分组与交叉都没有数据了,我这个实例是SQL sever

感觉动态表达式没有问题、语法也没有问题,就是不知道什么原因导致的

--  作者:有点蓝
--  发布时间:2022/12/29 10:52:00
--  
如果指定.FromServer = True,日期使用单引号,否则使用#号:http://www.foxtable.com/webhelp/topics/2401.htm


--  作者:onlinech
--  发布时间:2022/12/30 7:08:00
--  
试了下,仍然不行
我无意中打开系统自带的实例“多表统计”,发现只要是日期的分组统计好像都没有数据,不知道是不是BUG

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20221230070457.png
图片点击可在新窗口打开查看


--  作者:onlinech
--  发布时间:2022/12/30 7:24:00
--  
发现2022-8-18的版本就是不显示数据,之后我又重新装了2021年的版本,“多表统计”就可以显示数据了,
但是我自己的程序,提示”文件版本过高,无法正常打开,请升级您的Foxtable!“
所以没办法测试了

--  作者:有点蓝
--  发布时间:2022/12/30 8:31:00
--  
麻烦认真仔细看看6楼说明

Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期", "月")
g.Groups.AddDef("日期", DateGroupEnum.Day, "日")
g.Totals.AddDef("数量")
g.FromServer = True
g.Filter = "日期=#1999-01-17#" 内部表。access使用#,SqlServer改为g.Filter = "日期=\'1999-01-17\'
g.Build()
MainTable = Tables("统计表1")
[此贴子已经被作者于2022/12/30 8:35:39编辑过]

--  作者:onlinech
--  发布时间:2022/12/30 9:15:00
--  
是我截图放错了,2022-8-18的版本就是不显示数据

g.Filter = "日期=\'1999-01-17\'"

2021年版本用同样的代码,就可以显示数据