Foxtable(狐表)用户栏目专家坐堂 → [求助]表如何根据某列的值生成另一列的值?


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

主题:[求助]表如何根据某列的值生成另一列的值?

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
[求助]表如何根据某列的值生成另一列的值?  发帖心情 Post By:2018/10/17 17:33:00 [只看该作者]

各位老师前辈,请教一个问题,在表中,如果根据其中一列的值,生成另一列的值,类似于函数列,但是有判断,比如现在我想根据审批状态列生成单据状态的列,如果审批状态列的值为审批通过,则单据状态的值为已生效,如果是其它值,则为未生效,我写了下面代码,放在表的DataColChanged里面,但是没达到效果,特来请教一下!

If e.DataCol.Name="审批状态" Then
    
    If e.DataRow("审批状态") = "审核通过" Then
        e.DataRow("单据状态")= "已生效"
    Else
        e.DataRow("单据状态")= "未生效"
    End If
    
End If

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


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

1、代码没问题,请确认【审批状态】列不是表达式列;

 

2、重置列以后,是否有效?http://www.foxtable.com/webhelp/scr/1469.htm

 


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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2018/10/17 17:52:00 [只看该作者]

搞清楚了,是要在判断列的内容发生变化后,才会看到效果,多谢老师!~

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2018/10/17 18:04:00 [只看该作者]

老师,前面的代码没问题了,不过这段代码好像没效果,不知道是不是逻辑没写对?

If e.DataCol.Name="开始时间" Or e.DataCol.Name="结束时间" Then
    If e.DataRow("开始日期") > Date.Today Then
        e.DataRow("执行进度")= "未进行"
    End If
    If e.DataRow("开始日期") < Date.Today And e.DataRow("结束日期") > Date.Today Then
        e.DataRow("执行进度")= "已进行"
    End If
    If e.DataRow("结束日期") < Date.Today Then
        e.DataRow("执行进度")= "已结束"
    End If
End If

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


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

If e.DataCol.Name="开始时间" Or e.DataCol.Name="结束时间" Then
    If e.DataRow("结束日期") <> Nothing AndAlso e.DataRow("结束日期") < Date.Today Then
        e.DataRow("执行进度")= "已结束"
    ElseIf e.DataRow("开始日期") > Date.Today Then
        e.DataRow("执行进度")= "未进行"
    ElseIf e.DataRow("开始日期") <= Date.Today And e.DataRow("结束日期") >= Date.Today Then
        e.DataRow("执行进度")= "已进行"
    End If   
End If

 回到顶部