以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按条件增加列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184846)

--  作者:guosheng
--  发布时间:2023/1/9 16:11:00
--  按条件增加列
1、有个日期的控件(假设值是 2020-11-1)
2、表A的开始日期列,如何开始日期小于 2020-11-1,则将  开始日期改为   2020-11-1;否则,开始日期的值不变。
将A的开始日期更新  或  新增一列都行。怎么操作方面怎么来啊  感谢。

--  作者:有点蓝
--  发布时间:2023/1/9 16:36:00
--  
意思是把整个表A的开始日期列小于 2020-11-1的数据全部更新为2020-11-1?


dim d as date = cdate("2020-11-01")
DataTables("表A").ReplaceFor("开始日期"d"[开始日期] <#" & d & "#")

--  作者:guosheng
--  发布时间:2023/1/10 9:18:00
--  
计算两列的日期之间的天数,为什么报错找不到列啊。是用法有问题吗
DataTables("明细表").ReplaceFor("天数",(cdate([合同结束日期]) - cdate([合同开始日期])).days ,"")
--  作者:有点蓝
--  发布时间:2023/1/10 9:23:00
--  
ReplaceFor只能使用固定的值,不支持列之间的表达式运算。

如果使用SQLReplaceFor,要使用符合sql规则的表达式语法,不能使用vb代码的语法:http://www.foxtable.com/webhelp/topics/1827.htm


DataTables("明细表").SQLReplaceFor("天数",DateDiff(d, 合同开始日期合同结束日期) ,true)

--  作者:guosheng
--  发布时间:2023/1/10 9:32:00
--  
有办法在    表达式列中计算 两列日期的天数吗
--  作者:有点蓝
--  发布时间:2023/1/10 9:44:00
--  
请认真看4楼
--  作者:guosheng
--  发布时间:2023/1/10 11:08:00
--  
Select Case e.DataCol.Name
    Case "合同结束日期"
      Dim t As TimeSpan
        t = CDate(CurrentTable.Current("合同结束日期")) - CDate(CurrentTable.Current("合同开始日期"))
       e.DataRow("天数") = t.days
End Select

以下代码触发datacolchange事件后,求出来的 天数为什么都是   - 1
Tables("明细表").DataTable.ReplaceFor("合同结束日期",ed, "[合同结束日期] >  #" & ed & "#")  

--  作者:有点蓝
--  发布时间:2023/1/10 11:24:00
--  
先看看:http://www.foxtable.com/webhelp/topics/2925.htm

t = CDate(e.DataRow("合同结束日期")) - CDate(e.DataRow("合同开始日期"))