以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Afterfilter 事件问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134691) |
-- 作者:edisontsui -- 发布时间:2019/5/4 8:11:00 -- Afterfilter 事件问题 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出来,那个单元格显示空格就可以了。请教要怎样写代码?谢谢。
|
-- 作者:有点甜 -- 发布时间:2019/5/4 9:13:00 --
生成报表以后,循环每一行,循环每一列,如果值是0的,改值为nothing,即可。
|
-- 作者:edisontsui -- 发布时间:2019/5/4 12:49:00 -- 此主题相关图片如下:标题名.jpg 像上面这种通过 Crosstablebuilder 形成的标题名应该是怎样的才对,我试过“产品PD01”、“产品.PD01”、"PD01产品"、“产品”都不行,运行代码都会说:列“......”不属于表 ...。
|
-- 作者:有点甜 -- 发布时间:2019/5/4 15:33:00 -- 你查看表结构,看看列名是什么
http://www.foxtable.com/webhelp/scr/0193.htm
|
-- 作者:edisontsui -- 发布时间: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列的内容)。 输入字符串的格式不正确。 请教为什么?谢谢。
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2019/5/4 17:09:00 -- 按照你的代码,会出现如下警告: .NET Framework 版本:2.0.50727.8793 Foxtable 版本:2017.3.18.1 错误所在事件:日薪计算,AfterFilter 详细错误信息: 索引超出范围。必须为非负值并小于集合大小。 参数名: index |
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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 谢谢。还有一个问题:如上代码,只有小时数、个人占比、计件工资和餐补可以实现垂直相加,而我希望“总数量”也能够实现垂直相加。如何修改代码?
|
-- 作者:有点甜 -- 发布时间:2019/5/5 9:25:00 -- 自己设置合计模式
http://www.foxtable.com/webhelp/scr/2748.htm
http://www.foxtable.com/webhelp/scr/2750.htm
|