以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 急,后台交叉统计表达式求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=6253) |
||||
-- 作者:shixia -- 发布时间:2010/3/21 13:02:00 -- 急,后台交叉统计表达式求助 在收费表中有一个窗口,功能是对收费和人员管理中后台数据进行交叉统计,但是我写的代码却发生错误。 以"李四"可用款为例: 正确的数据为:2000-156-(-840)=2684 但是,统计后显示的值为1904,原因可能在这段代码中有问题:g.Totals.AddExp("可用款","[收费金额]-[月扣款]-([收费金额]/[任务])*[上缴]") 这段代码里的[月扣款]应为156,但是却是以936参与计算,即以6*156=936参与了计算,请问如何在表达式中对[月扣款]取平均值参与计算?
另:横向汇总合计后,如何在数字型列“月份”中显示“合计”,当然如果第一列是字符型列,可以自动出现“合计” [此贴子已经被作者于2010-3-21 13:05:12编辑过]
|
||||
-- 作者:shixia -- 发布时间:2010/3/21 22:05:00 -- 我简化了一下代码为:g.Totals.AddExp("可用款","[月扣款]"),即统计月扣款,“李四”1月份的可用款为936,说明在g.Totals.AddExp("可用款","[收费金额]-[月扣款]-([收费金额]/[任务])*[上缴]")中[月扣款]是以936参与计算导致数据错误,请问如何设置表达式,使[月扣款]等于156参与计算?
|
||||
-- 作者:贺老六 -- 发布时间:2010/3/21 22:21:00 -- 看不懂,最好用简单的例子来表述问题。 |
||||
-- 作者:mr725 -- 发布时间:2010/3/22 12:37:00 -- 楼主原代码简化一下,看出问题来了:
[此贴子已经被作者于2010-3-22 12:41:38编辑过]
|
||||
-- 作者:shixia -- 发布时间:2010/3/22 12:43:00 -- "表B“有9行数据,每个月每个人都只有一行数据,点击统计窗口按钮(该按钮里有后台数据交叉统计代码),出现”费用核算表“,收入-月扣款=可用款,逻辑关系正确。但是如果在“表B”中把9行数据复制后增加9行再粘贴,保存后,再点击统计按钮,在新的“费用核算表”中,收入-月扣款<>可用款,无法达到我的:收入-月扣款=可用款 要求。其原因是代码:g.Totals.AddExp("可用款","[收入]-[月扣款]")中的[月扣款]=表B中同一个人在同月份内的收入次数*“扣款表”[月扣款]。复制粘贴一次乘以2,再复制粘贴一次就乘以3了。请问如何实现参与计算[月扣款]等于“扣款表”[月扣款]?
[此贴子已经被作者于2010-3-22 12:43:47编辑过]
|
||||
-- 作者:shixia -- 发布时间:2010/3/22 12:45:00 -- 4楼说的完全正确,请问如何实现 |
||||
-- 作者:mr725 -- 发布时间:2010/3/22 12:55:00 -- 干脆这样直接再计算一次: for i as integer = 0 to tables("费用核算表").count-1 tables("费用核算表").rows(i)("可用款_1") = _ tables("费用核算表").rows(i)("收费金额_1") - _ tables("费用核算表").rows(i)("月扣款_1") - _ tables("费用核算表").rows(i)("上缴_1") next |
||||
-- 作者:shixia -- 发布时间:2010/3/22 13:21:00 -- 如果任务人数变动,就不好设置"可用款_1"列名,而且代码量会很长,没有SQLCrossTableBuilder简洁,最好是狐爸能让表达式中支持Avg之类函数,直接Avg([月扣款] )参与计算就好。 |
||||
-- 作者:mr725 -- 发布时间:2010/3/22 13:29:00 -- 任务人数变动不是问题,只要排序规则一致即可。 当然狐爸愿意搞定,大家受益啊~~~ 但人员管理表如果复杂些(或要加入其他关联)就难办了。。。。 [此贴子已经被作者于2010-3-22 13:36:52编辑过]
|
||||
-- 作者:shixia -- 发布时间:2010/3/22 13:41:00 -- 真是不好弄,后面我还有好几列都是一环环地套用前面列的数据来参与计算,用For Next来实现相当于交叉统计代码中“统计”功能无效了,仅仅是帮助我增加了这个列名而已 |