Foxtable(狐表)用户栏目专家坐堂 → 按条件增加列


  共有5549人关注过本帖树形打印复制链接

主题:按条件增加列

帅哥哟,离线,有人找我吗?
guosheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
按条件增加列  发帖心情 Post By:2023/1/9 16:11:00 [只看该作者]

1、有个日期的控件(假设值是 2020-11-1)
2、表A的开始日期列,如何开始日期小于 2020-11-1,则将  开始日期改为   2020-11-1;否则,开始日期的值不变。
将A的开始日期更新  或  新增一列都行。怎么操作方面怎么来啊  感谢。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/1/10 9:18:00 [只看该作者]

计算两列的日期之间的天数,为什么报错找不到列啊。是用法有问题吗
DataTables("明细表").ReplaceFor("天数",(cdate([合同结束日期]) - cdate([合同开始日期])).days ,"")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/10 9:23:00 [只看该作者]

ReplaceFor只能使用固定的值,不支持列之间的表达式运算。

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


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

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/1/10 9:32:00 [只看该作者]

有办法在    表达式列中计算 两列日期的天数吗

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/10 9:44:00 [只看该作者]

请认真看4楼

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By: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 & "#")  

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/10 11:24:00 [只看该作者]

先看看:http://www.foxtable.com/webhelp/topics/2925.htm

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

 回到顶部