Foxtable(狐表)用户栏目专家坐堂 → 跨表引用疑问


  共有2153人关注过本帖树形打印复制链接

主题:跨表引用疑问

帅哥哟,离线,有人找我吗?
ming8604
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:82 积分:816 威望:0 精华:0 注册:2016/9/30 11:31:00
跨表引用疑问  发帖心情 Post By: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,可能手动修改。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110624 积分:563022 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/1/3 20:12:00 [只看该作者]

如果没有最近一次,就是只有一条记录,那又应该怎么算

 回到顶部
帅哥哟,离线,有人找我吗?
ming8604
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:82 积分:816 威望:0 精华:0 注册:2016/9/30 11:31:00
  发帖心情 Post By:2017/1/4 9:21:00 [只看该作者]

对哦。
那就置零了。

还有,我查了我的语句上只能实现查找的第一次同Sapcode的newrate,不是最近一次同Sapcode的newrate。

想要实现这种功能,应该如何写呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 9:29:00 [只看该作者]

加参数

 

dr = DataTables("pcndetail").Find("[Sapcode] = '" & e.NewValue & "' and _Identify <> " & e.datarow("_Identify"), "排序的列 desc")


 回到顶部
帅哥哟,离线,有人找我吗?
ming8604
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:82 积分:816 威望:0 精华:0 注册:2016/9/30 11:31:00
  发帖心情 Post By: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") )
怎么实现??





 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 15:08:00 [只看该作者]

 

e.DataRow("oldrate") = dr("newrate") * e.DataRow("ConditionPricingUnit") / dr("ConditionPricingUnit")

 


 回到顶部
帅哥哟,离线,有人找我吗?
ming8604
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:82 积分:816 威望:0 精华:0 注册:2016/9/30 11:31:00
  发帖心情 Post By: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”运算符后缺少操作数。


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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")

 回到顶部