Foxtable(狐表)用户栏目专家坐堂 → 合格率


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

主题:合格率

美女呀,离线,留言给我吧!
qinlao666
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3766 威望:0 精华:0 注册:2015/3/3 10:06:00
合格率  发帖心情 Post By:2019/3/19 12:42:00 [只看该作者]

Dim b As New CrossTableBuilder("统计表1",DataTables("采购送检"))
b.HGroups.AddDef("送检日期",DateGroupEnum.Year,"年") '添加日期列用于水平分组,按年分组
b.HGroups.AddDef("供方代码","供方代码") '添加日期列用于水平分组,按月分组
b.VGroups.AddDef("送检日期","送检日期_{0}月") '添加产品列用于垂直分组
b.Totals.AddDef("金额") '添加数量列用于统计
b.Totals.AddDef("交验数量") '添加数量列用于统计
b.Totals.AddDef("合格数量") '添加数量列用于统计
b.Totals.AddDef("降用数量") '添加数量列用于统计
b.Totals.AddDef("报废数量") '添加数量列用于统计
b.Subtotal = True '生成汇总模式
b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

我想在统计表中再增加一列合格率,公式是合格数量/交验数量,
请老师赐教代码,谢谢!

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


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

生成统计表后,添加一列,即可

 

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

 


 回到顶部
美女呀,离线,留言给我吧!
qinlao666
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3766 威望:0 精华:0 注册:2015/3/3 10:06:00
  发帖心情 Post By:2019/3/19 13:16:00 [只看该作者]

我需要每月都进行合格率的统计

 回到顶部
美女呀,离线,留言给我吧!
qinlao666
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3766 威望:0 精华:0 注册:2015/3/3 10:06:00
  发帖心情 Post By:2019/3/19 13:30:00 [只看该作者]

请教老师,我这个列名该如何写,测试总是找不到列名
DataTables("统计表1").DataCols.Add("合格率", Gettype(Double), "[合格数量] / [交验数量] ")

 回到顶部
美女呀,离线,留言给我吧!
qinlao666
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3766 威望:0 精华:0 注册:2015/3/3 10:06:00
  发帖心情 Post By:2019/3/19 14:08:00 [只看该作者]

Dim b As New CrossTableBuilder("统计表1",DataTables("采购送检"))
b.HGroups.AddDef("送检日期",DateGroupEnum.Year,"年") '添加日期列用于水平分组,按年分组
b.HGroups.AddDef("供方代码","供方代码") '添加日期列用于水平分组,按月分组
b.VGroups.AddDef("送检日期","{0}月") '添加产品列用于垂直分组
b.Totals.AddDef("金额") '添加数量列用于统计
b.Totals.AddDef("交验数量") '添加数量列用于统计
b.Totals.AddDef("合格数量") '添加数量列用于统计
b.Totals.AddDef("降用数量") '添加数量列用于统计
b.Totals.AddDef("报废数量") '添加数量列用于统计
b.Subtotal = True '生成汇总模式
b.Build '生成统计表
Dim nms() As String = {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"}
For Each nm As String In nms 
DataTables("统计表1").DataCols.Add(nm & "_合格率",Gettype(Double), nm & "_合格数量"/ nm & "_ 交验数量"  )
    Tables("统计表1").Cols(nm & "_合格率").Move(Tables("统计表1").Cols(nm & "_报废数量").Index + 1)
Next
MainTable = Tables("统计表1") '打开生成的统计表

报错    从字符串“_合格数量”到类型“Double”的转换无效。
请老师帮忙修改下代码

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


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

1、看你的表结构是什么,列名有可能写错了

 

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

 

2、如果不会做,上传实例测试


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


加好友 发短信
等级:六尾狐 帖子:1309 积分:9507 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2019/3/19 14:33:00 [只看该作者]

以下是引用有点甜在2019/3/19 14:28:00的发言:

1、看你的表结构是什么,列名有可能写错了

 

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

 

2、如果不会做,上传实例测试



此主题相关图片如下:无标题.png
按此在新窗口浏览图片


老师,正好我也也碰到这样的问题,表的名称无法判断,只能从标题看到。 表达式要怎么写。

[此贴子已经被作者于2019/3/19 14:33:27编辑过]

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


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

先这样处理

 

Dim dic As new Dictionary(of String, String)
For Each dc As DataCol In DataTables("统计表1").DataCols
    dic.Add(dc.Caption, dc.Name)
Next

 

使用的时候,这样处理

 

If dic.ContainsKey("第一列") Then
    msgbox(dic("第一列"))
End If


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


加好友 发短信
等级:六尾狐 帖子:1309 积分:9507 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2019/3/19 15:02:00 [只看该作者]


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

代码如下,老师看一下有没有优化的空间!

 

Dim tb As Table = Tables(e.Form.Name & "_Table3")
Dim dt As DataTable = tb.DataTable

Dim nmls As new List(of String)
Dim nmts As new List(of String)
Dim zd As New Dictionary(Of String, String)
zd.Clear

For Each c As Col In tb.Cols
    If c.Name.StartsWith("处理结果_") Then
        zd.Add(c.Caption,c.Name)
        Dim cs() As String = c.Caption.Split("_")
        If nmls.Contains(cs(0)) = False Then nmls.Add(cs(0))
        If nmts.Contains(c.Caption) = False Then nmts.Add(c.Caption)
    End If
Next
Dim nms() As String = {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"}
For Each nm As String In nms
    If nmls.Contains(nm) Then
        Dim cn As String = Nothing
        For Each c As Col In tb.Cols
            If c.Caption.StartsWith(nm & "_") Then
                If cn > "" Then cn &= " + "
                cn &= zd(c.Caption)
            End If
        Next
        dt.DataCols.Add(nm & "_合计",Gettype(Double), cn)
       
        If  nmts.Contains(nm & "_合格")  Then  dt.DataCols.Add(nm & "_合格率",Gettype(Double), "[" & zd(nm & "_合格") & "] / [" & nm & "_合计"  & "]" )
        If  nmts.Contains(nm & "_退货")  Then  dt.DataCols.Add(nm & "_合格率",Gettype(Double), "[" & zd(nm & "_退货") & "] / [" & nm & "_合计"  & "]" )
    End If
Next


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


加好友 发短信
等级:六尾狐 帖子:1309 积分:9507 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2019/3/19 15:16:00 [只看该作者]

还有一个问题,新增的列是在表单的后面的,如何用代码将他们重新排序,像9楼的图片显示一样。

 回到顶部
总数 13 1 2 下一页