以文本方式查看主题

-  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
--  
程序都是死的,你要发命令让它做什么它才知道要做什么!

如果到了明年,需要重新计算年龄列,但是除非你重新输入出生日期,否则上面的代码是不会重算年龄的。
不过我们可以在AfterOpenProject事件中,设置下面的代码:

DataTables("员工").DataCols("出生日期").RaiseDataColChanged()


http://www.foxtable.com/webhelp/topics/1587.htm