以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [讨论] datacolchanged 时间问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115155) |
|
-- 作者:81538475 -- 发布时间:2018/3/1 21:52:00 -- [讨论] datacolchanged 时间问题 按照帮助文档上的方法成功了,但是我希望JSSJ这一列如果是空的时候才会写入当天的日期,否则日期不变。下面的代码问题在哪里呀 If e.DataCol.Name = "已结算" Then If e.NewValue = True Then If e.DataRow ("结算时间") Is Nothing Then e.DataRow ("结算时间") = Date.Today() e.DataRow.Locked = True Else e.DataRow.Locked = True End If Else e.NewValue = Nothing End If End If
|
|
-- 作者:chnfo -- 发布时间:2018/3/1 21:56:00 -- If e.DataCol.Name = "已结算" Then If e.DataRow ("结算时间") Is Nothing Then e.DataRow ("结算时间") = Date.Today() End If e.DataRow.Locked = True End If [此贴子已经被作者于2018/3/1 22:07:16编辑过]
|
|
-- 作者:81538475 -- 发布时间:2018/3/1 22:02:00 -- 以下是引用chnfo在2018/3/1 21:56:00的发言:
If e.DataCol.Name = "已结算" Then If e.DataRow ("结算时间") Is Nothing Then e.DataRow ("结算时间") = Date.Today() e.DataRow.Locked = True Else e.DataRow.Locked = True End If End If [此贴子已经被作者于2018/3/1 21:58:51编辑过] 还是不行呀
|
|
-- 作者:chnfo -- 发布时间:2018/3/1 22:08:00 -- 如果已经结算,那么结算时间这一列就赋当天日期。 如果没有结算呢?不赋值? Select Case e.DataCol.Name Case "JS" If e.DataRow("JS") = True AndAlso e.DataRow.IsNull("JSSJ") = True Then e.DataRow("JSSJ") = Date.Today() End If End Select [此贴子已经被作者于2018/3/1 22:14:15编辑过]
|
|
-- 作者:81538475 -- 发布时间:2018/3/1 22:10:00 -- 还是不可以的。如果 吧这个去掉的话 If e.NewValue = True 。 就不能实现 这个逻辑咧是true的时候才锁定这一行了。而且结算时间那一列也每有反应 |
|
-- 作者:chnfo -- 发布时间:2018/3/1 22:16:00 -- Select Case e.DataCol.Name Case "JS" If e.DataRow("JS") = True Then If e.DataRow.IsNull("JSSJ") = True Then e.DataRow("JSSJ") = Date.Today() End If e.DataRow.Locked = True End If End Select
|
|
-- 作者:81538475 -- 发布时间:2018/3/1 22:18:00 -- 嗯没有结算就不赋值。原来的代码是这样的 If e.DataCol.Name = "JSZT" Then If e.NewValue = True Then e.DataRow ("JSSJ") = Date.Today() e.DataRow.Locked = True Else e.NewValue = Nothing End If End If 这样会有个问题,当结算被勾选的时候,这一行就会被锁定,但是考虑到后面可能会有前面的数据修改,就需要解锁这一行,结算时间还是不变的,只是修改其他地方的数据,这样一来,按照刚才的代码,重新勾选结算之后,结算时间就又变成的修改的当天了。这就不对了。
|
|
-- 作者:81538475 -- 发布时间:2018/3/1 22:24:00 -- 太感谢了。原来要用 e.DataRow.IsNull("JSSJ") = True |
|
-- 作者:chnfo -- 发布时间:2018/3/1 22:26:00 -- 那代码你不能这么整呀。 前面的数据修改的时候,你要去触发某一列的重置,让这一列的状态发生改变。 "JS"这一列的值发生改变,需要通过其它的代码来改变状态才行
[此贴子已经被作者于2018/3/1 22:30:28编辑过]
|
|
-- 作者:有点甜 -- 发布时间:2018/3/1 22:30:00 -- 如果判断为空,用这样
If e.DataRow ("结算时间") = Nothing Then |