以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表如何根据某列的值生成另一列的值?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126266)

--  作者:lunengcheng
--  发布时间: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

--  作者:有点甜
--  发布时间:2018/10/17 17:36:00
--  

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

 

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

 


--  作者:lunengcheng
--  发布时间:2018/10/17 17:52:00
--  
搞清楚了,是要在判断列的内容发生变化后,才会看到效果,多谢老师!~
--  作者:lunengcheng
--  发布时间: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

--  作者:有点甜
--  发布时间: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