以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自定义的公式如何代入?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=70036)

--  作者:sxcspring
--  发布时间:2015/6/15 8:57:00
--  [求助]自定义的公式如何代入?

一个工艺规程表,一张产品表,需要求解【产品表】中“宽度”对应的“箱长”。对应关系如下:

按【产品表】的“宽度”检索【工艺规程】中符合条件的“公式”,条件是:“宽度MIN”<“宽度”<“宽度MAX”。

检索到【工艺规程】中该行后,调用这行的“公式”计算【产品表】的“箱长”。

 

“公式”中字母“L”就是【产品表】中的产品“宽度”,现在的问题是:

“公式”列为字符,如何调用作为数学公式计算?

 

如:产品A宽度为450,满足400<450<500,则A的“箱长”调用【工艺规程】第一行的“公式”:"2*L+250",那么,A的“箱长”=2*450+250=1150。

 可实际, 命L为整数,且L=e.DataRow(“宽度”)时,不能得出e.DataRow(“箱长”)=dr(“公式")  =1150,怎么办?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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

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

--  作者:sxcspring
--  发布时间:2015/6/15 9:40:00
--  

哪位专家、大师,跪求解决方案~~~~~~~~~~


--  作者:大红袍
--  发布时间:2015/6/15 9:45:00
--  

DataColChanged事件

 

If e.DataCol.Name = "宽度" Then
    If e.DataRow.IsNull("宽度") Then
        e.DataRow("箱长") = Nothing
    Else
        Dim fdr As DataRow = DataTables("工艺规程").Find("宽度MIN <= " & e.DataRow("宽度") & " and 宽度MAX >= " & e.DataRow("宽度"))
        If fdr IsNot Nothing Then
            msgbox(fdr("公式"))
            e.DataRow("箱长") = eval(fdr("公式").replace("L", e.DataRow("宽度")))
        Else
            e.DataRow("箱长") = Nothing
        End If
    End If
End If


--  作者:sxcspring
--  发布时间:2015/6/15 10:37:00
--  

谢谢你,大红袍!

 

还有一个问题,在这个案例当中,如果是产品E,其宽度是910,管芯突出是80,对应的公式是工艺规程中的第四行:L+235+2*N。

那么以上箱长是:910+235+2*80= 1305

 

问题是:这里的公式多了一个管芯突出80对应N,这一段应该怎么修改:

e.DataRow("箱长") = eval(fdr("公式").replace("L", e.DataRow("宽度")))


--  作者:sxcspring
--  发布时间:2015/6/15 10:56:00
--  

还有一个问题,在这个案例当中,如果是产品E,其宽度是910,管芯突出是80,对应的公式是工艺规程中的第四行:L+235+2*N。

那么以上箱长是:910+235+2*80= 1305

 

问题是:这里的公式多了一个管芯突出80对应N,这一段应该怎么修改:

e.DataRow("箱长") = eval(fdr("公式").replace("L", e.DataRow("宽度")))

 

大师,麻烦帮忙再看看~~


--  作者:大红袍
--  发布时间:2015/6/15 11:05:00
--  

If e.DataCol.Name = "宽度" OrElse e.DataCol.Name = "管芯突出" Then
    If e.DataRow.IsNull("宽度") Then
        e.DataRow("箱长") = Nothing
    Else
        Dim fdr As DataRow = DataTables("工艺规程").Find("宽度MIN <= " & e.DataRow("宽度") & " and 宽度MAX >= " & e.DataRow("宽度"))
        If fdr IsNot Nothing Then
            msgbox(fdr("公式"))
            e.DataRow("箱长") = eval(fdr("公式").replace("L", e.DataRow("宽度")).Replace("N", e.DataRow("管芯突出")))
        Else
            e.DataRow("箱长") = Nothing
        End If
    End If
End If

[此贴子已经被作者于2015/6/15 11:05:18编辑过]