Foxtable(狐表)用户栏目专家坐堂 → [讨论] datacolchanged 时间问题


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

主题:[讨论] datacolchanged 时间问题

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


加好友 发短信
等级:六尾狐 帖子:1302 积分:10502 威望:0 精华:1 注册:2018/1/20 12:40:00
[讨论] datacolchanged 时间问题  发帖心情 Post By:2018/3/1 21:52:00 [只看该作者]

按照帮助文档上的方法成功了,但是我希望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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1302 积分:10502 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1302 积分:10502 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/3/1 22:10:00 [只看该作者]

还是不可以的。如果 吧这个去掉的话 If e.NewValue = True 。  就不能实现 这个逻辑咧是true的时候才锁定这一行了。而且结算时间那一列也每有反应

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1302 积分:10502 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1302 积分:10502 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/3/1 22:24:00 [只看该作者]

太感谢了。原来要用  e.DataRow.IsNull("JSSJ") = True 

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/1 22:26:00 [只看该作者]

那代码你不能这么整呀。

前面的数据修改的时候,你要去触发某一列的重置,让这一列的状态发生改变。
"JS"这一列的值发生改变,需要通过其它的代码来改变状态才行
   
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
         End If
       e.DataRow.Locked = e.DataRow("JS")
End Select
[此贴子已经被作者于2018/3/1 22:30:28编辑过]

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


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

如果判断为空,用这样

 

If e.DataRow ("结算时间") = Nothing Then


 回到顶部