以文本方式查看主题 - 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 |