以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]日期加减的特殊需要,请大哥们指点. (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1334) |
||||
-- 作者:菜鸟foxtable -- 发布时间:2008/12/6 16:24:00 -- [求助]日期加减的特殊需要,请大哥们指点.
If e.DataCol.name = "结账" Then If e.NewValue = True Then If e.DataRow("停止日期") <> Nothing Then e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd") e.DataRow.Locked = True Else e.DataRow("停止日期") = (today) e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd") e.DataRow.Locked = True End If End If End If 10点前则按上面公式... 能否实现在特定时间填写停止日期或结账时:::比如早上10点后 e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")+1 请大哥们指点... [此贴子已经被作者于2008-12-6 21:32:20编辑过]
|
||||
-- 作者:gdtgl -- 发布时间:2008/12/6 17:32:00 -- 增加if条件: |
||||
-- 作者:don -- 发布时间:2008/12/6 18:19:00 -- If e.DataCol.name = "结账" Then dim dr as datarow = e.DataRow Dim h As integer= date.now.hour If dr("结账") = True Then If dr("开始日期") is Nothing Then MessageBox.Show("请输入『开始日期』!", "提示") dr("结账") = False Else If dr("停止日期") is Nothing Then dr("停止日期") = today End If dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0) dr.Locked = True End If End If End If [此贴子已经被作者于2008-12-6 18:32:34编辑过]
|
||||
-- 作者:菜鸟foxtable -- 发布时间:2008/12/6 21:08:00 -- 谢谢大哥们指点...... 学习让我感到快乐.... 论坛让我感到温暖.... don大哥的代码虽然不会报错,但是有一个问题. 如果停止日期不为空,且当时停止的时间是10点前, 而当前结账时间是10点后,代码无法判断此行导致计算不正确. gdtgl兄弟的代码经验证,如果开始日期为空,系统报错...其他问题同上. 不知这样修改行不行?开始日期在新建行时设为自动填写当前日期,所以不可能为空 If e.DataCol.name = "结账" Then dim dr as datarow = e.DataRow Dim h As integer= date.now.hour If dr("结账") = True Then If dr("停止日期") is Nothing Then dr("停止日期") = today dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0) dr.Locked = True End If End If End If 在AfterEdit里加入代码 If e.Col.name = "停止日期" Then dim dr as row = e.Row dim h As integer= date.now.hour dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0) End If [此贴子已经被作者于2008-12-6 22:05:02编辑过]
|
||||
-- 作者:菜鸟foxtable -- 发布时间:2008/12/6 22:06:00 -- 哈哈,经验证,已经有停止日期的行不能锁定...其他正常.. 前段代码插入 Else If dr("停止日期") isNot Nothing Then dr.Locked = True End If 搞定. [此贴子已经被作者于2008-12-6 22:15:24编辑过]
|