以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 跨表引用疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94844) |
-- 作者:ming8604 -- 发布时间:2017/1/3 18:43:00 -- 跨表引用疑问 原代码 datacolchanaged事件,最近上一次newrate等于这次的oldrate。 If e.DataCol.Name = "Sapcode" Then \'如果内容发生变动的是Sapcode列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是Sapcode列的内容为空 e.DataRow("OldRate") = Nothing \'那么清空此行单价列的内容 Else Dim dr As DataRow \'否则在pcndetail表查找同名的pcndetail行,将找到的行赋值给变量dr dr = DataTables("pcndetail").Find("[Sapcode] = \'" & e.NewValue & "\'") If dr IsNot Nothing Then \'如果找到了同名的pcndetail行,也就是dr不是Nothing e.DataRow("oldrate") = dr("newrate") End If End If End If 但是我想改成: 这一次的 oldrate=(最近一次newrate)*(这一次unit)/(最近一次unit) 请问怎么实现? 这一次unit,可能手动修改。 |
-- 作者:有点蓝 -- 发布时间:2017/1/3 20:12:00 -- 如果没有最近一次,就是只有一条记录,那又应该怎么算 |
-- 作者:ming8604 -- 发布时间:2017/1/4 9:21:00 -- 对哦。 那就置零了。 还有,我查了我的语句上只能实现查找的第一次同Sapcode的newrate,不是最近一次同Sapcode的newrate。 想要实现这种功能,应该如何写呢?
|
-- 作者:有点色 -- 发布时间:2017/1/4 9:29:00 -- 加参数
dr = DataTables("pcndetail").Find("[Sapcode] = \'" & e.NewValue & "\' and _Identify <> " & e.datarow("_Identify"), "排序的列 desc") |
-- 作者:ming8604 -- 发布时间:2017/1/4 14:57:00 -- 谢谢。 dr = DataTables("pcndetail").Find("[Sapcode] = \'" & e.NewValue & "\' and _Identify <> " & e.datarow("_Identify"), "_Identify desc") e.DataRow("oldrate") =dr("newrate") e.DataRow("ConditionPricingUnit") = dr("ConditionPricingUnit") 这样就行了。 可是,我想要的是: e.DataRow("oldrate") = ( dr("newrate") * dr("ConditionPricingUnit") /e.DataRow("ConditionPricingUnit") ) 怎么实现?? |
-- 作者:有点色 -- 发布时间:2017/1/4 15:08:00 --
e.DataRow("oldrate") = dr("newrate") * e.DataRow("ConditionPricingUnit") / dr("ConditionPricingUnit")
|
-- 作者:ming8604 -- 发布时间:2017/6/4 16:00:00 -- 专家,你好。 我现在的需求是先输入产品物料,对应查出上次输入的供应商,等信息。 我的原价格是,同个采购组织,同物料编码,同个供应商。满足三个条件后生成。 我的代码如下,可是就报错了,应该是后半段出问题了。麻烦看看,谢谢。 datacolchanged If e.DataCol.Name = "物料编码" Then \'如果内容发生变动的是 物料编码 列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是 物料编码 列的内容为空 e.DataRow("原主含税价") = Nothing \'那么清空此行单价列的内容 Else Dim dr As DataRow \'否则在价格申请子表查找同名的物料编码行,将找到的行赋值给变量dr dr = DataTables("价格申请子表").Find("[物料编码] = \'" & e.NewValue & "\' and _Identify <> " & e.DataRow("_Identify"), "_Identify desc") If dr IsNot Nothing Then \'如果找到了同名物料行,也就是dr不是Nothing e.DataRow("供应商代码") = dr("供应商代码") e.DataRow("税率") = dr("税率") Dim wr As DataRow wr = DataTables("价格申请子表").Find("[采购组织] = \'" & e.DataRow("采购组织") & "[物料编码] = \'" & e.DataRow("物料编码") & "[供应商代码] = \'" & e.DataRow("供应商代码") &"\' And _Identify <> " & e.DataRow("_Identify"), "_Identify desc") If wr IsNot Nothing Then \'如果找到同采购组织,同物料编码,同个供应商代码三个条件的行 e.DataRow("原主含税价") = wr("主含税单价") End If End If End If End If 报错如下: .NET Framework 版本:2.0.50727.8745 Foxtable 版本:2016.7.29.1 错误所在事件:表,价格申请子表,DataColChanged 详细错误信息: 调用的目标发生了异常。 语法错误:“660921050300”运算符后缺少操作数。 |
-- 作者:有点色 -- 发布时间:2017/6/4 20:57:00 -- Dim wr As DataRow wr = DataTables("价格申请子表").Find("[采购组织] = \'" & e.DataRow("采购组织") & "\' and [物料编码] = \'" & e.DataRow("物料编码") & "\' and [供应商代码] = \'" & e.DataRow("供应商代码") &"\' And _Identify <> " & e.DataRow("_Identify"), "_Identify desc") |