以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]根据条件判断求值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113321)

--  作者:工匠
--  发布时间:2018/1/13 12:42:00
--  [求助]根据条件判断求值
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:根据条件判断求值.foxdb



老师好:
      关于“综合单价”,需要按其他几列条件及关联表记录条件,求值,请老师帮做个例子,万分感谢!
谢谢!

--  作者:有点蓝
--  发布时间:2018/1/13 14:24:00
--  
参考:http://www.foxtable.com/webhelp/scr/1451.htm

使用find的时候,按单价倒序排序即可查询最大值
Dim dr As DataRow DataTables("来料记录").Find("料号 = \'" & e.DataRow("料号") & "\'","外部单价 desc")


--  作者:工匠
--  发布时间:2018/1/13 14:59:00
--  
谢谢有点蓝老师,如果是单纯的跨表引用,现在简单的会了一点点,学习实验时,表达式用的多,这次实际情况的需求是需要很多判断条件的,请老师有时间帮忙做一下,谢谢!

1.  对《成本预算表》根据“是否需要加工”列对应行判断,对“综合单价”列对应行进行求值

1.1《成本预算表》里:”外部单价”、内部单价素材单价加工单价都是分别取《来料记录》表对应列的历史最高单价

1.2 如果《成本预算表》里“是否需要加工”列对应行是不需要加工行,那么“综合单价”列对应行的值就取:该行料号对应《来料记录》表关联料号的历史最高单价(注:如果外部单价高,就取外部单价历史最高的单价到“综合单价”位置,要是内部单价高,就取内部单价的历史最高单价到“综合单价”位置)  
    
1.3 如果《成本预算表》里“是否需要加工”列对应行是需要加工行,那么“综合单价”列对应行的值就取:该行料号对应《来料记录》表关联料号的素材单价历史最高单价+加工单价历史最高单价的和到“综合单价”位置

--  作者:有点蓝
--  发布时间:2018/1/13 15:10:00
--  
Select Case e.DataCol.Name
    Case "料号","是否需要加工"
        If e.DataRow.IsNull("料号") OrElse e.DataRow.IsNull("是否需要加工") Then
            e.DataRow("外部单价") = Nothing
            \'e.DataRow("型号") = Nothing
            \'e.DataRow("规格") = Nothing
            \'e.DataRow("单价") = Nothing
        Else
            Dim dr As DataRow
            If e.DataRow("是否需要加工") = "需要加工"
                dr = DataTables("来料记录").Find("[料号] = \'" & e.DataRow("料号") & "\'","素材单价 desc")
                If dr IsNot Nothing
                    e.DataRow("素材单价") = dr("素材单价")
                    e.DataRow("综合单价") = dr("素材单价") + dr("加工单价")
                End If
            Else
                dr = DataTables("来料记录").Find("[料号] = \'" & e.DataRow("料号") & "\'","外部单价 desc")
                If dr IsNot Nothing
                    e.DataRow("外部单价") = dr("外部单价")
                    e.DataRow("综合单价") = IIF(dr("外部单价") > dr("内部单价"),dr("外部单价") ,dr("内部单价"))
                End If
            End If
        End If
End Select