Foxtable(狐表)用户栏目专家坐堂 → 对于不为空的单元格,希望在另外一列中设置日期


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

主题:对于不为空的单元格,希望在另外一列中设置日期

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


加好友 发短信
等级:婴狐 帖子:28 积分:263 威望:0 精华:0 注册:2011/7/19 10:29:00
对于不为空的单元格,希望在另外一列中设置日期  发帖心情 Post By:2011/12/7 17:36:00 [只看该作者]

Select Case e.DataCol.Name

    Case "Y"    
    With CurrentTable
      Dim r As Date = Date.Today
      If e.DataRow("Y") IsNot Nothing Then
         .Current("Z")=r.AddDays(7)
      End If
    End With
End Select

请指点以上代码,感谢!!


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/7 17:39:00 [只看该作者]

Select Case e.DataCol.Name
    Case "Y"
    With CurrentTable
        Dim r As Date = Date.Today
        If e.DataRow.IsNull("Y")  = False Then
            .Current("Z")=r.AddDays(7)
        End If
    End With
End Select

参考:

http://www.foxtable.com/help/topics/1470.htm

 


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/12/7 17:40:00 [只看该作者]

If e.DataRow.IsNull("Y") = false then

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


加好友 发短信
等级:婴狐 帖子:28 积分:263 威望:0 精华:0 注册:2011/7/19 10:29:00
  发帖心情 Post By:2011/12/8 9:19:00 [只看该作者]

因为Y列为表达式列,上面的代码无法实现,我试了一下,数据列就可以,请教对表达式列要实现以上代码有没有别的办法,感谢!!!

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


加好友 发短信
等级:小狐 帖子:362 积分:3196 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2011/12/8 10:45:00 [只看该作者]

为什么不用数据列呢?

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


加好友 发短信
等级:小狐 帖子:362 积分:3196 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2011/12/8 10:47:00 [只看该作者]

表达式列的特殊性

我们知道,列的值发生变化,会相继触发DataColChanging和DataColChanged事件。
但是有一个例外: 表达式列的值发生变化时,并不会触发这两个事件。

假定C列是一个表达式列,根据A列和B列的值计算得出,而D列的值则根据C列的值用代码计算得出。
通常我们会这样编写DataColChanged事件的代码:

Select Case e.DataCol.Name
   
Case "C"
         
'计算D列的代码
End Select

但是上述代码是无效的,因为作为表达式列,C列发生变化的时候,并不会触发DataColChanged事件。

我们可以换个思路,既然C列是有A列和B列计算得出,那么C列发生变化,肯定是因为A列或B列发生变化引起的。
所以正确的代码是:

Select Case e.DataCol.Name
    Case "A" ,"B"
         
'计算D列的代码
End
Select


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


加好友 发短信
等级:婴狐 帖子:28 积分:263 威望:0 精华:0 注册:2011/7/19 10:29:00
  发帖心情 Post By:2011/12/8 11:21:00 [只看该作者]

有道理,了解,谢谢!!

 回到顶部