Foxtable(狐表)用户栏目专家坐堂 → [原创]子表的删除行DataRowDeleted事件不能触发父表的DataColChanged事件的问题


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

主题:[原创]子表的删除行DataRowDeleted事件不能触发父表的DataColChanged事件的问题

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


加好友 发短信
等级:婴狐 帖子:47 积分:441 威望:0 精华:0 注册:2018/10/6 18:05:00
  发帖心情 Post By:2019/1/15 17:32:00 [只看该作者]

子表的datacolchanged事件有重置列,子表的datacolchanged代码是这样的,

 

 

If (e.DataCol.Name = "PO单价" AndAlso Not(e.DataRow.IsNull("PO数量"))) OrElse (e.DataCol.Name = "PO数量"  AndAlso Not(e.DataRow.IsNull("PO单价"))) Then

    DataTables("orderlist").DataCols("需求总金额").RaiseDataColChanged("PO = '" & e.DataRow("PO") & "'")


End If


If e.DataCol.Name = "PO总价"  Then

    Dim dr2 As DataRow = e.DataRow
   
  If Not(dr2.IsNull("PO总价"))  Then

    Dim amount,xj,xc As Double
   
    amount = Math.Round(dr2("PO单价") * dr2("PO数量"),3)
    xj = Math.Abs(amount-dr2("PO总价"))
    xc = xj / dr2("PO总价")
   
   
    If  xj < 0.1 OrElse  xc <0.001  Then
            dr2("价格核对") = "核对正常"
    Else
            dr2("价格核对") = "核对异常"
    End If
  End If

End If


If e.DataCol.Name = "生产单号"  AndAlso Not(e.DataRow.IsNull("生产单号")) Then


e.DataRow("生产安排时间") = Date.Now()

End If


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


加好友 发短信
等级:婴狐 帖子:47 积分:441 威望:0 精华:0 注册:2018/10/6 18:05:00
  发帖心情 Post By:2019/1/15 17:36:00 [只看该作者]

以下是引用有点甜在2019/1/15 17:20:00的发言:

你子表的datacolchanged事件,没有重置列?

 

DataTables("orderlist").DataCols("需求总金额").RaiseDataColChanged("PO = '" & e.DataRow("PO") & "'")

子表明细的金额列也是个表达式,我不能直接引用,是用PO单价和PO数量计算的。

按照普通的新增一行,然后在PO单价和PO数量同时不为空的情况下,可以触发父表的需求总金额列。得到最新的总金额。

 

但是,如果提取事先用EXCEL表格里面输入PO单价和PO数量,然后合并导入的方式,得到父表的总金额就不是最新的。没有子表新增导入一行的金额数值。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:36:00 [只看该作者]

写到代码最后

 

DataTables("orderlist").DataCols("需求总金额").RaiseDataColChanged("PO = '" & e.DataRow("PO") & "'")


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


加好友 发短信
等级:婴狐 帖子:47 积分:441 威望:0 精华:0 注册:2018/10/6 18:05:00
  发帖心情 Post By:2019/1/15 17:40:00 [只看该作者]

主要问题就是在EXCEL中提前输入PO单价和PO数量,做一个EXCEL表格,然后使用了批量合并导入的方式,新增一行,然后父母的总金额就不是最新的。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:44:00 [只看该作者]

以下是引用子剑在2019/1/15 17:40:00的发言:
主要问题就是在EXCEL中提前输入PO单价和PO数量,做一个EXCEL表格,然后使用了批量合并导入的方式,新增一行,然后父母的总金额就不是最新的。

 

实例发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:45:00 [只看该作者]

以下是引用子剑在2019/1/15 17:40:00的发言:
主要问题就是在EXCEL中提前输入PO单价和PO数量,做一个EXCEL表格,然后使用了批量合并导入的方式,新增一行,然后父母的总金额就不是最新的。

 

那你导入后,或者导入过程中,重置列了没有?


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


加好友 发短信
等级:婴狐 帖子:47 积分:441 威望:0 精华:0 注册:2018/10/6 18:05:00
  发帖心情 Post By:2019/1/15 17:48:00 [只看该作者]

以下是引用有点甜在2019/1/15 17:20:00的发言:

你子表的datacolchanged事件,没有重置列?

 

DataTables("orderlist").DataCols("需求总金额").RaiseDataColChanged("PO = '" & e.DataRow("PO") & "'")

但是在子表中使用DataRowAdded事件,然后新导入订单明细表一行,在DataRowAdded事件中计算跟踪总金额就可以得到最新的值,我在想能否使用全局变量的方式,在子表DataRowAdded中计算的最新总金额,赋值给一个全局变量,然后在父表订单表中的DataColChanged事件中引用,当然父表的DataColChanged事件中还要应对删除行的计算,如果引用了子表增加行中的全局变量,那么又影响了删除行的总金额计算。 现在我还没有使用全局变量实验。不知道行不行的通。

 

备注:使用批量导入EXCEL表格新增一行,可以同时引发子表的DataColChanged和DataRowAdded两个事件。先是触发DataColChanged, 后是触发DataRowAdded事件。

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:53:00 [只看该作者]

以下是引用子剑在2019/1/15 17:40:00的发言:
主要问题就是在EXCEL中提前输入PO单价和PO数量,做一个EXCEL表格,然后使用了批量合并导入的方式,新增一行,然后父母的总金额就不是最新的。

 

那你导入后,或者导入过程中,重置列了没有?

 

具体实例发上来测试。


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


加好友 发短信
等级:婴狐 帖子:47 积分:441 威望:0 精华:0 注册:2018/10/6 18:05:00
  发帖心情 Post By:2019/1/15 17:55:00 [只看该作者]

以下是引用有点甜在2019/1/15 17:44:00的发言:

 

实例发上来测试。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:订单管理_201901151750.zip

实例已发

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 17:58:00 [只看该作者]

1、数据库发上来,或者改成内部数据源的实例;

 

2、开发者密码发出来;

 

3、说明测试步骤。


 回到顶部
总数 28 上一页 1 2 3 下一页