以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求助计算设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108911)

--  作者:hahahehe21
--  发布时间:2017/10/31 21:03:00
--  [求助]求助计算设置
表“业务估价”中粘盒费的基本计算方法为:IIF([数量]>起订个数,开机费 + ([数量] - 起订个数) *单价,开机费)

现在要增加考虑表“粘盒”中盒子类型和大小两个条件,
盒子的类型不同(扣底或不扣底),盒子大小不同(K数大小不同),对应的单价和起订数量都不一样。

好像有点复杂,不知道怎么设置粘盒费的计算公式了,求帮助。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (2).foxdb




--  作者:有点蓝
--  发布时间:2017/10/31 21:32:00
--  
这种逻辑无法使用表达式做。只能用代码处理
--  作者:hahahehe21
--  发布时间:2017/10/31 21:33:00
--  
那用代码如何设置呢,求助
--  作者:有点蓝
--  发布时间:2017/10/31 21:50:00
--  
看不懂你表数据的关系

参考:http://www.foxtable.com/webhelp/scr/1452.htm
--  作者:有点甜
--  发布时间:2017/11/1 9:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (2).foxdb


--  作者:hahahehe21
--  发布时间:2017/11/1 21:24:00
--  
非常感谢有点甜老师,代码确实实现了我的想法,代码有点复杂,我得慢慢消化才行。我忘了写一个条件,就是扣底 和 不扣底都不选时粘盒费为空或者0, 这个要怎么改代码呢?请指教,再次感谢!
--  作者:有点甜
--  发布时间:2017/11/1 21:49:00
--  
Select Case e.DataCol.name
    Case "数量", "K数", "扣底", "不扣底"
        Dim kd As String = iif(e.DataRow("扣底") = True, "扣底", iif(e.DataRow("不扣底") = True, "不扣底", ""))
        If kd = "" Then
            e.DataRow("粘盒费") = Nothing
        Else
            Dim fdr As DataRow = DataTables("粘盒").find("盒子大小K <= " & e.DataRow("K数") & " and 粘盒类型 = \'" & kd & "\'", "盒子大小K desc")
            If fdr IsNot Nothing Then
                msgbox(fdr("盒子大小K"))
                e.DataRow("粘盒费") = IIF(e.DataRow("数量")>fdr("起订个数"),fdr("开机费") + (e.DataRow("数量") - fdr("起订个数")) * fdr("单价"), fdr("开机费"))
            End If
        End If
End Select

--  作者:hahahehe21
--  发布时间:2017/11/1 22:01:00
--  
墙裂感谢甜老师!!!
--  作者:hahahehe21
--  发布时间:2017/11/1 23:05:00
--  
甜老师,我在你的代码基础上改写用到了另一工序上报错了,帮看看哪里出问题了,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (2) 更改.foxdb


--  作者:有点甜
--  发布时间:2017/11/1 23:18:00
--  

修改代码

 

Dim fdr1 As DataRow = DataTables("粘片基").find("盒子大小K <= \'" & e.DataRow("K数") & zpj & "\'", "盒子大小K desc")