以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  找工程,倒算数量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94137)

--  作者:zhangning
--  发布时间:2016/12/16 13:14:00
--  找工程,倒算数量

图片点击可在新窗口打开查看此主题相关图片如下:加工1.png
图片点击可在新窗口打开查看
如图,已知想加工出的最终良品数,如第一行 “最终良品数”是26个,需要找到最后一道工序,(最后一道工序的工程名列有内容,其后工序的工程名列就是空值了),“最终良品数” ÷ 最后一道工序的“良品率” = 最后一道工序的“投入数量”,
之后往前一道工序类推,    最终得出第1序的“投入数量”,
请问老师,要达到这样的效果怎么弄呢?谢谢!



--  作者:狐狸爸爸
--  发布时间:2016/12/16 15:01:00
--  
if e.datacol.name = "最终良品数" orelse e.datacol.name.EndsWith("_投入数量") orelse e.datacol.name.EndsWith("_工程名称")
     dim lg as string = "第1序"
     For i as integer = 2 to 10 ‘假定有10个工序
          if e.datarow.IsnUll("第" & i & "序_工程名称") then
              exit for
          else
               lg = "第" & i & "序"
          end if
     next
      e.datarow(lg & "_投入数量") = e.datarow("最终良品数") * e.datarow(lg & "_良品率")
end if

--  作者:zhangning
--  发布时间:2016/12/16 15:59:00
--  
狐狸爸爸,您好!我将代码复制到 表 的Datacolchanged事件里,重置列后,
直接就退出狐表了,不知道什么原因?

--  作者:zhangning
--  发布时间:2016/12/16 16:11:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产管理2016新实验.rar


--  作者:zhangning
--  发布时间:2016/12/16 16:12:00
--  
开发   qdkf
--  作者:狐狸爸爸
--  发布时间:2016/12/16 16:26:00
--  
if e.datacol.name = "最终良品数"  orelse e.datacol.name.EndsWith("_工程名称")
     dim lg as string = "第1序"
     For i as integer = 2 to 10 ‘假定有10个工序
          if e.datarow.IsnUll("第" & i & "序_工程名称") then
              exit for
          else
               lg = "第" & i & "序"
          end if
     next
      e.datarow(lg & "_投入数量") = e.datarow("最终良品数") * e.datarow(lg & "_良品率")
end if
[此贴子已经被作者于2016/12/16 16:26:04编辑过]

--  作者:zhangning
--  发布时间:2016/12/19 9:30:00
--  
老师,您好!
我运行代码后,出现以下异常:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:表,加工排产,DataColChanged
详细错误信息:
调用的目标发生了异常。
值对于 Int32 太大或太小。不能在 第1序_投入数量 列中存储 <非数字>。所需类型是 Int32。
值对于 Int32 太大或太小。


关闭窗口后,有些也只是显示最后一道工序的数量,如何倒推,直到第一序,全部工序的投入数量都显示呢?






--  作者:zhangning
--  发布时间:2016/12/19 9:33:00
--  
算数量时,希望的是只要有小数,都进成整数,
比如:  5.2  显示为6
5.8也显示为6

--  作者:有点色
--  发布时间:2016/12/19 10:16:00
--  
If e.DataCol.name = "最终良品数"  OrElse e.DataCol.name.EndsWith("_工程名")
    Dim count As Integer = e.DataRow("最终良品数")
    For i As Integer = 12 To 1 Step -1 \'假定有10个工序
        If e.DataRow.Isnull("第" & i & "序_工程名") = False Then
            Dim lg As String = "第" & i & "序"
           
            count = Math.Ceiling(count / e.DataRow(lg & "_良品率"))
            e.DataRow(lg & "_投入数量") = count
        End If
    Next
   
End If

--  作者:zhangning
--  发布时间:2016/12/19 11:07:00
--  
谢谢老师,
运行有点异常
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:表,加工排产,DataColChanged
详细错误信息:
调用的目标发生了异常。
算术运算导致溢出。

关闭窗口后,到第一序的数量都出来了,而且都对,很快,
请老师帮看看,问题出在哪里了呢?