Foxtable(狐表)用户栏目专家坐堂 → 生产管理系统根据设置的公式模板计算数据


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

主题:生产管理系统根据设置的公式模板计算数据

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/12/31 16:00:00 [只看该作者]

会不会有,几个不同的不良现象,有的出现在同一个物件上,有的出现在不同的物件上,这就复杂了,又不知道你具体的规定。


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


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By:2013/12/31 16:05:00 [只看该作者]

并不需要考虑不同的物件,这一张流程piao其实就只有一个物件,就是B表设置的内容都是变量而已。就是同一工序会出现不同类别的不良品。lsy能不能用我的事例把你理解的做一个传给我看看,万分感谢?
[此贴子已经被作者于2013-12-31 16:10:10编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/12/31 16:33:00 [只看该作者]

呵呵,我总算看明白了实际合格是怎么算的,代码我可以帮你写好,但是实际领料还是没有看明白。

楼主可能是文科生,表述问题不那么清晰,第5行的实际领料982怎么来的?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/12/31 16:49:00 [只看该作者]

IT行业在学科属于啥学科?

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/12/31 17:02:00 [只看该作者]

第5行,有三个不良原因:脱粉(2)、封漏(2)、黑头(1)

其中黑头不用减领料。

实际领料 = 986 - (2 + 2)


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


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By:2013/12/31 18:41:00 [只看该作者]

lsy理解很正确,因为在排气一行的脱粉和封漏是上道工序”上粉“和”平封“造成的不良品,故而根据B表的设置,排气的领料是要减掉的,所以实际领料=986-2-2=982,所以A表的计算就必须是由B表的设置作为查找条件然后再自动计算实际领料和实际合格的,B表的内容都是变量,这样用户就可以灵活地设置计算方法了。
[此贴子已经被作者于2013-12-31 18:46:49编辑过]

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


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

 终于是写完了,也不简单吖。测试通过。

 你把表A的datacolchanged里的代码删除掉,单独做一个按钮计算,代码如下

Dim t As Table = Tables("表A")
Dim fdt As DataTable = DataTables("表B")
Dim llsl As Integer = t.Rows(0)("领料")
For i As Integer = 0 To t.Rows.Count - 1
    For Each c As Col In t.Cols
        If c.Name Like "不良原因分类_*" AndAlso t.Rows(i)(c.name) IsNot Nothing Then
            Dim filter As String = "相关工序 = '" & t.Rows(i)("工序") & "' and 不良原因名称 = '" & c.Name.Split("_")(1) & "'"
            Dim fdr As DataRow = fdt.Find(filter)
            If fdr IsNot Nothing Then
                Dim hg As String = fdr("计算公式设置_减合格工序")
                Dim hgbl As String = fdr("计算公式设置_比例1")
                Dim ll As String = fdr("计算公式设置_减领料工序")
                Dim llbl As String = fdr("计算公式设置_比例2")
                If hg IsNot Nothing Then
                    Dim ary1() As String = hg.Split(",")
                    Dim ary2() As String = hgbl.split(",")
                    For j As Integer = 0 To ary1.length - 1
                        Dim idx As Integer = t.FindRow("工序 = '" & ary1(j) & "'", 0, False)
                        If idx > -1 Then
                            t.Rows(idx)("实际合格") -= val(ary2(j)) * t.Rows(i)(c.name)
                        End If
                    Next
                End If
                t.Rows(i)("合格") -= t.Rows(i)(c.name)
                If ll IsNot Nothing Then
                    Dim ary1() As String = ll.Split(",")
                    Dim ary2() As String = llbl.split(",")
                    For j As Integer = 0 To ary1.length - 1
                        Dim idx As Integer = t.FindRow("工序 = '" & ary1(j) & "'", 0, False)
                        If idx > -1 Then
                            t.Rows(idx)("实际领料") -= val(ary2(j)) * t.Rows(i)(c.name)
                        End If
                    Next
                End If
            End If
        End If
    Next
    
    t.Rows(i)("合格") += llsl
    t.Rows(i)("实际领料") += llsl
    t.Rows(i)("实际合格") += llsl
    t.Rows(i)("领料") = llsl
    llsl = t.Rows(i)("合格")
Next

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


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By:2014/1/1 10:10:00 [只看该作者]

此代码已经符合计算逻辑 ,A表中不良原因不一定要有数据,但当A表不良原因栏没有数据时,好像程序执行到第二行就出错。不能在datacolChanged事件里执行程序吗?就是当A表的领料列和不良原因分类栏的数据发生改变后,再自动执行计算程序,这样不就时时显示计算结果,会更直观吗?
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/1/1 10:53:00 [只看该作者]

放在按钮里最合适,在其他事件中都不太好处理。

有点甜的代码已经很完善了,我稍微修饰一下:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义公式计算合格数领料数.table


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


加好友 发短信
等级:幼狐 帖子:136 积分:1090 威望:0 精华:0 注册:2011/12/18 14:29:00
  发帖心情 Post By:2014/1/1 11:34:00 [只看该作者]

两个问题均通过按钮执行代码,功能是完全能实现了,看来还是需要有较深的写程序功底才行啊,初学都不可能写得出来的,只能按狐爸说的按顺序学了!!!这个程序还有这样写法的“  += ”真是没看到过。遗憾的是不能通过表datacolchanged事件执行,时时动态计算。
[此贴子已经被作者于2014-1-1 11:36:39编辑过]

 回到顶部
总数 54 上一页 1 2 3 4 5 6 下一页