以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  父表触发  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=124569)

--  作者:liuandwang
--  发布时间:2018/9/9 16:41:00
--  父表触发
各位老师:
我在关联明细副表“产品名称”列是通过Parent(主表订单).客户名称引用的,我想触发副表“产品名称”列,
在主表订单DataColChanged写入了如下代码:
If e.DataCol.name = "产品名称" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("订单明细表") \'找出对应的父行
    If pr IsNot Nothing Then
        DataTables("订单明细表").DataCols("产品名称").RaiseDataColChanged(pr)  \'通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If
End If
但发现不能使用,有没有更好的代码,谢谢

--  作者:有点甜
--  发布时间:2018/9/9 16:53:00
--  

直接说明你想做什么功能吧。


--  作者:liuandwang
--  发布时间:2018/9/9 17:56:00
--  
在副表中需要通过触发产品名称,获得产品单价。
表事件:
If e.DataCol.Name = "产品名称" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dz As DataRow
    dz = DataTables("产品信息").Find("产品名称 = \'" & e.DataRow("产品名称") & "\'" )
    If dz IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("产品型号")= dz("产品型号")
        e.DataRow("产品单价")= dz("产品单价")
            End If
End If \'自动引用产品型号和单位

--  作者:有点甜
--  发布时间:2018/9/9 18:11:00
--  

1、表达式列,是不会触发datacolchanged事件的。

 

2、如果要强制触发,父表datacolchanged事件这样写

 

 msgbox(123)

 DataTables("订单明细表").DataCols("产品名称").RaiseDataColChanged("产品名称 = \'" & e.DataRow("产品名称") & "\'")