Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义的公式如何代入?


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

主题:[求助]自定义的公式如何代入?

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


加好友 发短信
等级:婴狐 帖子:59 积分:682 威望:0 精华:0 注册:2012/12/20 23:02:00
[求助]自定义的公式如何代入?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:59 积分:682 威望:0 精华:0 注册:2012/12/20 23:02:00
  发帖心情 Post By:2015/6/15 9:40:00 [只看该作者]

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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:59 积分:682 威望:0 精华:0 注册:2012/12/20 23:02:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:59 积分:682 威望:0 精华:0 注册:2012/12/20 23:02:00
  发帖心情 Post By: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("宽度")))

 

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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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编辑过]

 回到顶部