以文本方式查看主题

-  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=148516)

--  作者:爱相随
--  发布时间:2020/4/9 11:40:00
--  关于在窗口中统计数据的问题
老师,我在窗口中增加了TopicBar类型窗口,想统计日、周、月付款笔数和金额,以下代码没有提示错误,但统出来的数据不正确,全部为0.请老师指导,谢谢!!

Dim Page As WinForm.TopicPage
Dim cnt1 As Integer = DataTables("资金计划付款明细表").Compute("Count(_Identify)" , "rq = #"  & Date.Today & "#")
Dim cnt4 As Integer = DataTables("资金计划付款明细表").Compute("sum(支付金额)" , "rq = #"  & Date.Today & "#")
Page = e.Form.Controls("TopicBar1").Pages.Add("即时信息","即时信息")
Page.Links.Add("今日付款笔数","今日付款笔数(" & cnt1 & ")" )
Page.Links.Add("今日付款金额","今日付款金额(" & cnt4 & ")" )

Dim y As Integer = Date.Today.Year
Dim w As Integer = Date.Today.DayOfWeek \'算出今天是星期几
Dim dt1 As Date = Date.Today.AddDays(-w) \'获取本周的第一天
Dim dt2 As Date = Date.Today.AddDays(6 - w) \'获取本周的最后一天
Dim Filter1 As String
Filter1 = "rq >= #" & dt1 & "# And rq <= #" & dt2 & "#"
Dim cnt2 As Integer = DataTables("资金计划付款明细表").Compute("Count(_Identify)" , "rq >= #" & dt1 & "# And rq <= #" & dt2 & "#")
Dim cnt3 As Integer = DataTables("资金计划付款明细表").Compute("sum(支付金额)" , "rq >= #" & dt1 & "# And rq <= #" & dt2 & "#")
Page.Links.Add("本周付款笔数","本周付款笔数(" & cnt2 & ")" )
Page.Links.Add("本周付款金额","本周付款金额(" & cnt3 & ")" )

Dim m As Integer = Date.Today.Month
Dim dt3 As New Date(y, m, 1)
Dim dt4 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天
Dim Filter2 As String
Filter2 = "rq >= #" & dt3 & "# And rq <= #" & dt4 & "#"
Dim cnt5 As Integer = DataTables("资金计划付款明细表").Compute("Count(_Identify)" , "rq >= #" & dt3 & "# And rq <= #" & dt4 & "#")
Dim cnt6 As Integer = DataTables("资金计划付款明细表").Compute("sum(支付金额)" , "rq >= #" & dt3 & "# And rq <= #" & dt4 & "#")
Page.Links.Add("本月付款笔数","本月付款笔数(" & cnt5 & ")" )
Page.Links.Add("本月付款金额","本月付款金额(" & cnt6 & ")" )

--  作者:有点蓝
--  发布时间:2020/4/9 11:50:00
--  
说明没有符合条件的数据
--  作者:爱相随
--  发布时间:2020/4/9 12:01:00
--  
怎么及时刷新数据呢,周步表没用,只有重新打开才行,有没有更好的办法。
--  作者:有点蓝
--  发布时间:2020/4/9 12:12:00
--  
Compute改为sqlCompute
--  作者:爱相随
--  发布时间:2020/4/9 13:50:00
--  

前面都对的,
Compute改为sqlCompute
,提示“\'#\' 附近有语法错误。”而且只计算累计数了,本日、本周、本月、本年都没有数据了
[此贴子已经被作者于2020/4/9 13:51:13编辑过]

--  作者:有点蓝
--  发布时间:2020/4/9 14:15:00
--  
如果是SqlServer数据库,看看:http://www.foxtable.com/webhelp/topics/2343.htm
--  作者:爱相随
--  发布时间:2020/4/13 16:26:00
--  
老师,在导航栏的TopicBar显示统计信息,数据不能自动更新,重新打开项目后数据能更新。也将Compute改为sqlCompute,日期也按SQL server 格式调整,但是无论表切换,还是导航栏的点节切换,统计数据都不能自动更新。。。。只有重新打开项目后数据才能更新,如果要将统计数据实时自动更新,需要怎么处理呢??
另外,如果要做的统计数据较多,如何能将TopicBar折成2列、3列或更多的列显示在窗口(在窗口面铺开),而不是一列排列到底需要通过滚动条上下翻滚呢??
[此贴子已经被作者于2020/4/13 16:29:21编辑过]

--  作者:有点蓝
--  发布时间:2020/4/13 16:29:00
--  
方法1、开启窗口计时器,在计时事件里定时(比如每10分钟)处理:遍历所有的导航栏,重新使用sqlCompute计算和更新
2、在更改数据后,比如datacolchanged事件,重新使用sqlCompute计算和更新对应的导航栏文本
[此贴子已经被作者于2020/4/13 16:30:35编辑过]

--  作者:爱相随
--  发布时间:2020/4/13 16:40:00
--  
谢谢老师,我试试
--  作者:爱相随
--  发布时间:2020/4/14 11:22:00
--  
老师,这两个方法都不知道怎么处理呢,麻烦老师具体指导一下,比如在哪个地方用什么代码,谢谢!!