以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- datacolchanged 疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119193) |
-- 作者:edisontsui -- 发布时间:2018/5/19 16:07:00 -- datacolchanged 疑问 我在datacolchanged里面设置了如下代码: If e.Datarow("下料长") = 0 If e.DataCol.Name = "下料宽" If e.newvalue = 0 e.DataRow("类型") = "侧板" \' End If End If end if 我要达成的目标是:如果“下料长” = 0, 而且如果"下料宽"输入数据“0”时,“类型”才会自动输入“侧板”,也就是说,要“下料长”和"下料宽"都为0时,“类型”才会自动输入“侧板”。但是,实际结果是,如果“下料长” 是空值,如果"下料宽"输入数据“0”时,“类型”也会自动输入“侧板”。这是不符合我当初的要求的。怎么修改才行?谢谢。
|
-- 作者:有点蓝 -- 发布时间:2018/5/19 16:30:00 -- If e.DataCol.Name = "下料长" OrElse e.DataCol.Name = "下料宽" If e.DataRow("下料长") = 0 AndAlso e.DataRow("下料宽") = 0 e.DataRow("类型") = "侧板" Else e.DataRow("类型") = Nothing End If End If
|
-- 作者:edisontsui -- 发布时间:2018/5/19 16:39:00 -- 你这个代码,运行之后发现, "下料长" 和"下料宽"只要有一个是0,就会("类型") = "侧板"。而我要的结果是,“下料长”和"下料宽"同时为0时,“类型”才会自动输入“侧板”。 |
-- 作者:有点蓝 -- 发布时间:2018/5/19 16:44:00 -- If e.DataCol.Name = "下料长" OrElse e.DataCol.Name = "下料宽" If e.DataRow.Isnull("下料长") OrElse e.DataRow.Isnull("下料宽") e.DataRow("类型") = Nothing Else e.DataRow("类型") = IIF(e.DataRow("下料长") = 0 AndAlso e.DataRow("下料宽") = 0,"侧板",Nothing) End If End If
|
-- 作者:edisontsui -- 发布时间:2019/8/27 17:04:00 -- If e.DataCol.Name = "录入日期" If e.DataRow.IsNull("录入日期") Then e.DataRow("确认") = False Else Dim tp As TimeSpan = Date.today - CDate(e.DataRow("录入日期")) If Math.Round(tp.TotalDays/1,0) > 1 e.DataRow("确认") = True End If End If End If 我在datacolchanged里面有上述代码,希望录入日期超过当天日期1天以上的,就将“确认”那栏设为true。但是实际运行时(即重新登录之后),却起不了作用。请教为什么? |
-- 作者:有点蓝 -- 发布时间:2019/8/27 17:08:00 -- If e.DataCol.Name = "录入日期" If e.DataRow.IsNull("录入日期") Then e.DataRow("确认") = False Else e.DataRow("确认") = e.newvalue > Date.today .adddays(1) End If End If
|
-- 作者:edisontsui -- 发布时间:2019/8/28 12:45:00 -- 以上代码放在 datacolchanged 里面,每次登陆系统是时,其实“录入日期”是不会改变的,变动的只是今天日期。我希望的是,重新登录系统时,昨天以前的数据行,其“确认”一栏都要自动变动为“true”。但是实际上达不到这个要求。 |
-- 作者:有点蓝 -- 发布时间:2019/8/28 14:33:00 -- 程序都是死的,你要发命令让它做什么它才知道要做什么! 如果到了明年,需要重新计算年龄列,但是除非你重新输入出生日期,否则上面的代码是不会重算年龄的。 DataTables("员工").DataCols("出生日期").RaiseDataColChanged() |