以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 数据变动判断 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2775) |
-- 作者:baoxyang -- 发布时间:2009/5/13 15:58:00 -- 数据变动判断 如有表A,修改第二列某单元格数据时,如大于原值,提示,并返回原值。如何实现?请教各位了 |
-- 作者:don -- 发布时间:2009/5/13 16:07:00 -- DataColChanging 某一列的内容发生变化前执行,此时列的内容还是更改前的值。 e参数属性: 例如在订单表中,要求折扣列的值不能超过0.15,可以在DataColChanging时间中设置如下代码: 上面的代码在折扣超出0.15后,取消此次变动;如果希望在折扣超出0.15后,自动改为0.15,代码如下: 通过更改NewValue参数的值,我们可以实现代码输入,例如: If e.DataCol.Name = "产品" Then \'如果是产品列的内容发生变化。If e.NewValue = "tv" Then \'如果新值是"tv"。 e.NewValue = "电视机" \'那么将"tv"替换为"电视机" ElseIf e.NewValue = "tel" \'如果新值是"tel" e.NewValue = "电话机" \'那么将"tel"替换为"电话机" End If End If 设置上述代码后,如果你在产品列输入tv,将自动替换为电视机,如果输入tel,自动替换为电话机。 |
-- 作者:baoxyang -- 发布时间:2009/5/13 17:47:00 -- 关键是原值如何取得的问题,上面这些我知。新值与原值的比较,如何编写?谢谢帮忙! |
-- 作者:baoxyang -- 发布时间:2009/5/13 17:49:00 -- 如有表A,修改第二列某单元格数据时,如大于原值,提示,并返回原值。如何实现?请教各位了 |
-- 作者:狐狸爸爸 -- 发布时间:2009/5/13 17:49:00 -- e.NewValue 是新值 e.DataRow(e.DataCol.Name) 是原来的值 也只有在DataColChanging事件能够同时获得新值和旧值,因为此时新值还没有覆盖旧值。 |
-- 作者:don -- 发布时间:2009/5/13 17:50:00 -- 以下是引用baoxyang在2009-5-13 17:47:00的发言:
关键是原值如何取得的问题,上面这些我知。新值与原值的比较,如何编写?谢谢帮忙! If e.DataCol.Name = "折扣" Then \'如果是折扣列的内容发生变化。 |
-- 作者:baoxyang -- 发布时间:2009/5/13 17:54:00 -- 哦,谢了! |
-- 作者:baoxyang -- 发布时间:2009/5/14 9:21:00 -- 新增加一条记录时就会判断DataColChanging中值的变化吗?如新增记录不进行此事件代码? |
-- 作者:kylin -- 发布时间:2009/5/14 10:04:00 -- 加一个e.NewValue isnot Null的判断就可以 |
-- 作者:baoxyang -- 发布时间:2009/5/14 11:05:00 -- 只能修改一次,成功后,再进行修改,只能根据成功的列值再次输入的值进行判断,可否再次根据原值(也就是初始值)与输入值进行判断呢?如何执行?请教各位了! |