Foxtable(狐表)用户栏目专家坐堂 → [求助]日期加减的特殊需要,请大哥们指点.


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

主题:[求助]日期加减的特殊需要,请大哥们指点.

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
[求助]日期加减的特殊需要,请大哥们指点.  发帖心情 Post By:2008/12/6 16:24:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:日期加减.table


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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/6 17:32:00 [只看该作者]

增加if条件:

Dim sj As Date = date.now
If e.DataCol.name = "结账" Then
    If e.NewValue = True Then
        If e.DataRow("停止日期") <> Nothing Then          
           if sj.Hour -10 > 0 then
              e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd") +1
              e.DataRow.Locked = True
          else
             e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
             e.DataRow.Locked = True
          end if
Else
    e.DataRow("停止日期") = (today)
    e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
    e.DataRow.Locked = True
        End If
    End If
End If


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2008/12/6 22:06:00 [只看该作者]

图片点击可在新窗口打开查看哈哈,经验证,已经有停止日期的行不能锁定...其他正常..

前段代码插入
Else
    If dr("停止日期") isNot Nothing Then
    dr.Locked = True
End If
搞定.
[此贴子已经被作者于2008-12-6 22:15:24编辑过]

 回到顶部