以文本方式查看主题

-  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")