以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 在DataColChanged使用以下代码就不会出错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28419) |
-- 作者:CMCC -- 发布时间:2013/1/28 22:48:00 -- 在DataColChanged使用以下代码就不会出错 在DataColChanged使用以下代码就不会出错 \'DataColChanged
Select Case e.DataCol.Name Case "客户名称" e.DataRow("投诉时间") = Date.now() End Select 但如果在DataRowAdding使用以下代码 e.DataRow("投诉时间") = Date.now()
就会提示。(注:有一列双精度列计算故障历时用。) 错误所在事件:表,投诉工单跟踪,DataColChanged
详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.InvalidCastException: 从字符串“”到类型“Double”的转换无效。 ---> System.FormatException: 输入字符串的格式不正确。 |
-- 作者:lin_hailun -- 发布时间:2013/1/29 8:41:00 -- 经测试,不是这些代码的问题,应该是其余代码影响的。 |
-- 作者:CMCC -- 发布时间:2013/1/29 16:09:00 -- 以下是引用lin_hailun在2013-1-29 8:41:00的发言:
经测试,不是这些代码的问题,应该是其余代码影响的。 是的,一直昨晚一直没找到问题点,今天再看一次终于发现了影响的代码(是一段时间计算代码),已经解决。 问题是:使用DataRowAdding的时候,生成的值滞后于公式计算的速度;而使用DataColChanged提前于公式计算的速度。因此使用DataRowAdding时会提示“从字符串“”到类型“Double”的转换无效”? |
-- 作者:CMCC -- 发布时间:2013/1/29 16:10:00 -- 或者说是优先级? |
-- 作者:lin_hailun -- 发布时间:2013/1/29 16:24:00 -- 执行的顺序是这样的。 新增一行->触发adding事件,执行代码,修改某列;暂停->触发changed事件,执行代码修改某值触发计算公式。 ------------- 如果问,先求公式,还是先执行changed,应该是先触发公式计算。 |