以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助金额如何根据条件计算结果  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=60271)

--  作者:hk1998
--  发布时间:2014/11/21 13:09:00
--  [求助金额如何根据条件计算结果
项目文件里有两个表
订单记录表和价格表,订单记录表如何根据价格表里的对应条件算出金额。
条件是:订单记录的客户,客户性质,商品名称=价格表的客户,客户性质,商品名称,并且订单记录的重量必须
符合价格表的重量段,也就是订单记录.重量>=价格表.最低重量  和 订单记录.重量<=价格表.最高重量
找到符合条件的  那么订单记录表.金额=重量*价格表.单价
找不到就跳过  =nothing
请各位大侠给出合理的代码,也许我这样的结构不理想,各位大侠有更好的办法算出金额,请给代码
我试过关联,重量段解决不了,而且父表不能有多个一样的关联记录。请看项目文件,谢谢

[此贴子已经被作者于2014-11-21 14:03:52编辑过]

--  作者:hk1998
--  发布时间:2014/11/21 13:10:00
--  
项目附件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:有点甜
--  发布时间:2014/11/21 14:09:00
--  

DataColChanged事件,代码

 

Select Case e.DataCol.Name
    Case "客户","客户性质","商品名称", "重量"
        Dim filter As String = "客户 = \'" & e.DataRow("客户") & "\' and 客户性质 = \'" & e.DataRow("客户性质") & "\' and 商品名称 = \'" & e.DataRow("商品名称") & "\'"
        Dim fdr As DataRow = DataTables("价格表").Find(filter & " and 最低重量 >= " & e.DataRow("重量"), "最低重量")
        If fdr IsNot Nothing Then
            e.DataRow("金额") = fdr("单价") * e.DataRow("重量")
        End If
End Select


--  作者:hk1998
--  发布时间:2014/11/21 14:45:00
--  [求助]不对呀

DataColChanged事件,代码

 

Select Case e.DataCol.Name
    Case "客户","客户性质","商品名称", "重量"
        Dim filter As String = "客户 = \'" & e.DataRow("客户") & "\' and 客户性质 = \'" & e.DataRow("客户性质") & "\' and 商品名称 = \'" & e.DataRow("商品名称") & "\'"
        Dim fdr As DataRow = DataTables("价格表").Find(filter & " and 最低重量 >= " & e.DataRow("重量"), "最低重量")
        If fdr IsNot Nothing Then
            e.DataRow("金额") = fdr("单价") * e.DataRow("重量")
        End If
End Select




订单记录的重量要满足订单记录.重量>=价格表.最低重量  和 订单记录.重量<=价格表.最高重量



现在的情况是比较了最低重量,没有比较最高重量。价格表的最低重量和最高重量是个范围来的,订单记录的重量要符合这范围


--  作者:有点甜
--  发布时间:2014/11/21 14:47:00
--  

 

Dim fdr As DataRow = DataTables("价格表").Find(filter & " and 最低重量 <= " & e.DataRow("重量") & " and 最高总量 >= " & e.DataRow("重量"), "最低重量")