Foxtable(狐表)用户栏目专家坐堂 → [求助]DataRowDeleted表事件


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

主题:[求助]DataRowDeleted表事件

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
[求助]DataRowDeleted表事件  发帖心情 Post By:2018/8/27 18:47:00 [只看该作者]

老师您好!
我在DataRowDeleted表事件的代码如下:
Dim drs = e.DataRow
If e.DataRow("类别") = "借入" Or e.DataRow("类别") = "垫付资金" Then
    Dim jl As Decimal
    Dim zjdf As Decimal
    Dim dzsl As Decimal
    jl = DataTables("项目借款数据").Compute("Sum(金额)","主合同编号 = '" & drs("主合同编号") & "'And [类别] = '借入'")
    zjdf = DataTables("项目借款数据").Compute("Sum(金额)","主合同编号 = '" & drs("主合同编号") & "'And [类别] = '垫付资金'")
    dzsl = jl + zjdf
    DataTables("工程合同基础数据").SQLReplaceFor("项目资金借入数",dzsl,"合同编号 = '" & drs("主合同编号") & "'")
    DataTables("工程合同基础数据").SQLReplaceFor("项目资金借款余额","IsNull([项目资金借入数],0) - IsNull([项目资金还款数],0)","合同编号 = '" & drs("主合同编号") & "'",True)
    DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安fa piao开piao数],0) - IsNull([项目资金还款数],0) - IsNull([支出合同应付款_已付数],0) - IsNull([工资支付数],0) - IsNull([其他成本支出数],0) - IsNull([税费报销支出],0) - IsNull([总部申报数],0) - IsNull([印花税_支出合同],0) - IsNull([印花税_固定资产],0) - IsNull([管理费汇总_合计],0) - IsNull([企业所得税_总部预交],0)","合同编号 = '" & drs("主合同编号") & "'",True)
End if

问题出在我删除刚刚新建的空行时,出现错误提示如下:

图片点击可在新窗口打开查看此主题相关图片如下:运行错误.png
图片点击可在新窗口打开查看

请教老师有什么办法?
另外请问老师Dim dr As DataRow 与 Dim dr = e.DataRow 有什么区别?
谢谢老师!
[此贴子已经被作者于2018/8/27 18:52:36编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/27 20:25:00 [只看该作者]

1、正确的用法应该是


e.DataRow("金额") = 0

1楼的代码放到DataColChanged事件

2、Dim dr As DataRow表示定义了一个名称为dr的类型为DataRow的变量,这时dr是空值
Dim dr = e.DataRow表示定义了一个名称为dr的变量,并且把e.DataRow赋值给dr,这时dr等于e.DataRow

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/8/28 9:29:00 [只看该作者]

老师您好!
第2条,我明白了。
第1条我没有明白,我的目的是,如果在表里删除了记录后,就要重新计算一下其他表所有关联的数据(后台更新,这时记录已删除,数据发生了变化。指已保存过的)。现在如果我删除已经保存过的记录没有错误提示,而且数据更新也正确。但是如果我刚刚增加的记录删除时会出现以上错误提示。
DataRowDeleted事件是删除行后执行,此时行已经被删除,所以我的想法是如果在删除时重算,被删除的行还在会一起计算。
请教老师有没有好的办法?能否给一个例子?
非常感谢!
[此贴子已经被作者于2018/8/28 9:31:40编辑过]

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


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

DataRowDeleting 事件记录变量,如

 

vars("值") = drs("主合同编号")

 

DataRowDeleted 事件,根据变量的值,写代码,如

 

jl = DataTables("项目借款数据").Compute("Sum(金额)","主合同编号 = '" & vars("值") & "'And [类别] = '借入'")


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/8/28 11:14:00 [只看该作者]

老师您好!也就是说在DataRowDeleting 设置代码:
Dim drs = e.DataRow
vars("主合同编号") = drs("主合同编号")

而在DataRowDeleted 不用设置
Dim drs = e.DataRow

是吧?
谢谢老师!


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/8/28 11:20:00 [只看该作者]

老师没有解决,改过代码后,删除空行时还是错误提示。
图片点击可在新窗口打开查看

再帮我看看,谢谢老师!

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


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

以下是引用沪上游客在2018/8/28 11:14:00的发言:

 
而在DataRowDeleted 不用设置
Dim drs = e.DataRow

是吧?
谢谢老师!

 

是的。e.datarow在datarowdeleted事件已经不存在了,无法直接使用的。


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/8/28 13:45:00 [只看该作者]

老师您好!
还是不行
是不是在DataRowDeleting 的代码
Dim drs = e.DataRow
vars("主合同编号") = drs("主合同编号")

换成:
Dim drs As DataRow
vars("主合同编号") = drs("主合同编号")

这样做对吗?

 回到顶部
帅哥哟,离线,有人找我吗?
沪上游客
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/8/28 13:59:00 [只看该作者]

老师是不是DataRow 和 Row 的区别,因为新增的行没有保存,后台没有这条记录。

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


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

以下是引用沪上游客在2018/8/28 13:59:00的发言:
老师是不是DataRow 和 Row 的区别,因为新增的行没有保存,后台没有这条记录。

 

1、不明白你什么意思,你想表达什么?

 

2、

 

Dim drs = e.DataRow
vars("主合同编号") = drs("主合同编号")

 回到顶部