Foxtable(狐表)用户栏目专家坐堂 → Afterfilter 事件问题


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

主题:Afterfilter 事件问题

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
Afterfilter 事件问题  发帖心情 Post By:2019/5/4 8:11:00 [只看该作者]

    Dim b2 As New CrossTableBuilder("挤出车间日薪记录",DataTables("日薪计算"))
    b2.hGroups.Clear()
    b2.vGroups.Clear()
    b2.Filter = Tables("日薪计算").Filter
    b2.HGroups.AddDef("生产日期",DateGroupEnum.Day,"日")
    b2.HGroups.AddDef("零件代号")
    b2.HGroups.AddDef("零件名称")
    b2.hgroups.AddDef("总数量")
    b2.hgroups.AddDef("单价")  
    b2.hgroups.AddDef("总金额") 
    b2.hgroups.AddDef("合作人数") 
    b2.VGroups.AddDef("姓名") 
    b2.Totals.AddDef("小时数")
    b2.Totals.AddDef("个人占比")
    b2.Totals.AddDef("计件工资")
    b2.Totals.AddDef("餐补")
    b2.OrderByTotal = True
    b2.VerticalTotal = True 
    b2.Build


上面的代码是在 Afterfilter 里面的。我希望的结果是:凡是“小时数”是0的,就不要显示0出来,那个单元格显示空格就可以了。请教要怎样写代码?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/4 9:13:00 [只看该作者]

 

生成报表以后,循环每一行,循环每一列,如果值是0的,改值为nothing,即可。

 

 


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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/5/4 12:49:00 [只看该作者]


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

像上面这种通过 Crosstablebuilder 形成的标题名应该是怎样的才对,我试过“产品PD01”、“产品.PD01”、"PD01产品"、“产品”都不行,运行代码都会说:列“......”不属于表 ...。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/4 15:33:00 [只看该作者]

你查看表结构,看看列名是什么

 

http://www.foxtable.com/webhelp/scr/0193.htm

 


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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/5/4 15:36:00 [只看该作者]

For c As Integer = 7 To Tables("挤出车间日薪记录").Cols.Count -1 
    For r As Integer = 0 To Tables("挤出车间日薪记录").Rows.Count -1
    Dim dr As Row = Tables("挤出车间日薪记录").Rows(r)
        If dr(r) = 0
            dr(r) = ""
        Else
            dr(r) = dr(r)
        End If 
    Next
Next

上述代码我希望从第8列开始将值为0的转换为空格。但是,会出现如下警告:

从字符串“SP-BAKELITE”到类型“Double”的转换无效(备注:SP-BAKELITE是第2列的内容)。
输入字符串的格式不正确。

请教为什么?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/4 15:40:00 [只看该作者]

For c As Integer = 7 To Tables("挤出车间日薪记录").Cols.Count -1
    For r As Integer = 0 To Tables("挤出车间日薪记录").Rows.Count -1
        Dim dr As Row = Tables("挤出车间日薪记录").Rows(r)
        If dr(r) = "0" Then
            dr(r) = Nothing
        End If
    Next
Next

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/5/4 17:09:00 [只看该作者]

按照你的代码,会出现如下警告:

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2017.3.18.1
错误所在事件:日薪计算,AfterFilter
详细错误信息:
索引超出范围。必须为非负值并小于集合大小。
参数名: index


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/4 17:28:00 [只看该作者]

For c As Integer = 7 To Tables("挤出车间日薪记录").Cols.Count -1
    For r As Integer = 0 To Tables("挤出车间日薪记录").Rows.Count -1
        Dim dr As Row = Tables("挤出车间日薪记录").Rows(r)
        If dr(c) = "0" Then
            dr(c) = Nothing
        End If
    Next
Next

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/5/5 8:05:00 [只看该作者]

    Dim b2 As New CrossTableBuilder("挤出车间日薪记录",DataTables("日薪计算"))
    b2.hGroups.Clear()
    b2.vGroups.Clear()
    b2.Filter = Tables("日薪计算").Filter
    b2.HGroups.AddDef("生产日期",DateGroupEnum.Day,"日")
    b2.HGroups.AddDef("零件代号")
    b2.HGroups.AddDef("零件名称")
    b2.hgroups.AddDef("总数量")
    b2.hgroups.AddDef("单价")  
    b2.hgroups.AddDef("总金额") 
    b2.hgroups.AddDef("合作人数") 
    b2.VGroups.AddDef("姓名") 
    b2.Totals.AddDef("小时数")
    b2.Totals.AddDef("个人占比")
    b2.Totals.AddDef("计件工资")
    b2.Totals.AddDef("餐补")
    b2.OrderByTotal = True
    b2.VerticalTotal = True 
    b2.Build

谢谢。还有一个问题:如上代码,只有小时数、个人占比、计件工资和餐补可以实现垂直相加,而我希望“总数量”也能够实现垂直相加。如何修改代码?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/5 9:25:00 [只看该作者]


 回到顶部
总数 23 1 2 3 下一页