Foxtable(狐表)用户栏目专家坐堂 → 急,后台交叉统计表达式求助


  共有15016人关注过本帖树形打印复制链接

主题:急,后台交叉统计表达式求助

帅哥哟,离线,有人找我吗?
mr725
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/22 12:37:00 [显示全部帖子]

楼主原代码简化一下,看出问题来了:


as New SQLCrossTableBuilder("费用核算表","收费")  '收费表是基表
g.C
g.AddTable("收费","任务人","人员管理","姓名")          '人员管理表是加入的要统计的表
g.AddCols("人员管理","任务","月扣款","上缴")
g.HGroups.AddDef("开piao日期", "月")                    '这是基表内容  费用核算表的垂直内容
g.VGroups.AddDef("任务人")            '这是基表内容  费用核算表的水平内容
g.Totals.AddDef("收费金额")             '结果是基表内容 合计 (同一人同年月)
g.Totals.AddDef("任务")                   '结果是添加表(人员管理)的该列合计  乘以 按基表中同一人同年月个数
g.Totals.AddDef("月扣款")                '结果是添加表(人员管理)的该列合计  乘以 按基表中同一人同年月个数
g.Totals.AddDef("上缴")                   '结果是添加表(人员管理)的该列合计  乘以 按基表中同一人同年月个数
g.HorizontalTotal=True '水平方向自动汇总.
g.VerticalTotal=True ' 垂直方向自动汇总.
g.Decimals=2 '整数型,用于设置统计结果要保留的小数位数.
g.Build '生成统计表
MainTable=Tables("费用核算表")

这是结果:图   1月有6个李四,2月有3个,3月有2个,12月有3个.(结果图中任务、月扣款、上缴都乘上了6、3、2

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看


楼主要的 (任务、) 月扣款 (、上缴) 只等于人员管理表中的该列的合计,而不要去 乘以 基表中同一人同年月个数  。
不知道我说的对不???

[此贴子已经被作者于2010-3-22 12:41:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/22 13:29:00 [显示全部帖子]

任务人数变动不是问题,只要排序规则一致即可。

当然狐爸愿意搞定,大家受益啊~~~ 但人员管理表如果复杂些(或要加入其他关联)就难办了。。。。
[此贴子已经被作者于2010-3-22 13:36:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/22 14:02:00 [显示全部帖子]

用你自己的按钮生成交叉表,再在你代码后面加上下面代码,看看结果对不?

dim ry as string = DataTables("收费").GetComboListString("任务人")
for ii as integer = 1 to ry.split("|").length
    for i as integer = 0 to tables("费用核算表").count-1
        tables("费用核算表").rows(i)("可用款_" & ii & "") = _
        tables("费用核算表").rows(i)("收费金额_" & ii & "") - _
        tables("费用核算表").rows(i)("月扣款_" & ii & "") - _
        tables("费用核算表").rows(i)("上缴_" & ii & "")

        tables("费用核算表").rows(i)("合计_可用款") = _
        tables("费用核算表").rows(i)("合计_收费金额") - _
        tables("费用核算表").rows(i)("合计_月扣款") - _
        tables("费用核算表").rows(i)("合计_上缴")
    next
next


[此贴子已经被作者于2010-3-22 14:06:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/22 18:04:00 [显示全部帖子]

垂直和水平的合计都没问题啊:

图片点击可在新窗口打开查看此主题相关图片如下:未命名+.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/22 19:38:00 [显示全部帖子]

以下是引用shixia在2010-3-22 19:12:00的发言:
mr725,能告诉我 tables("费用核算表").rows(i)("可用款_" & ii & "") = _等于什么吗?不知我俩的代码是否一样

就是你 费用核算表 里的列名称啊~ 


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/23 11:20:00 [显示全部帖子]

以下是引用shixia在2010-3-22 20:02:00的发言:
??我是说等于号后面的代码是什么?

^哈哈 , 下划线 “_ ” 是代码的分行符号,要不一行代码太长了的话,不太容易看啊~  ,你可以把分行符号删除,将代码连成一行(很长哦)来看看。


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/23 13:22:00 [显示全部帖子]

以下是引用shixia在2010-3-23 13:16:00的发言:
mr725 能不能把你的项目传上来,我看看我俩代码的区别,我合计功能无法实现。

我没有保留,就是在你的附件中测试的,在你原有那个大按钮中代码的后面加上12楼的代码。


 回到顶部