以文本方式查看主题 - 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 -- [求助]根据条件判断求值
老师好: 关于“综合单价”,需要按其他几列条件及关联表记录条件,求值,请老师帮做个例子,万分感谢! 谢谢!
|
||||
-- 作者:有点蓝 -- 发布时间: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
|