Foxtable(狐表)用户栏目专家坐堂 → 当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30


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

主题:当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30  发帖心情 Post By:2021/5/2 17:11:00 [只看该作者]

当前运行效果图:

图片点击可在新窗口打开查看此主题相关图片如下:11.gif
图片点击可在新窗口打开查看
怎么实现当系统时间等于到期时间的时候,运行该时间对应的计划事件后,自动将当前到期时间 赋值到初始时间列,然后重新计算到期时间呢?

以下内容是专门发给有点蓝浏览



新建一按钮  事件代码如下:【初步可以实现当前到期时间赋值到初始时间列 并重新计算到期时间,但是怎么实现
1、当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢  以便实现新的到期时间 新的月份   如图中的2021-5-31  执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30
2、如果到期时间已经是初始时间所在的周三,系统时间等于到期时间后,同样将到期时间赋值给初始时间  然后更新到期时间为下一个周三的时间】
For Each dr As DataRow In DataTables("计划事件").DataRows
    If dr("计划")=True Then
        If Date.now.Date= dr("到期时间").Date And Date.now.Hour= dr("到期时间").Hour And   Date.now.Minute= dr("到期时间").Minute Then
            dr("初始时间")=dr("到期时间")
            dr("到期时间")=Nothing
            DataTables("计划事件").DataCols("周期").RaiseDataColChanged()
            dr.Save            
        End If
    End If
Next

计划事件表列变化事件代码(计算时间,当有周期、日时候数据计算正常)
Select Case e.DataCol.Name
    Case "周期","分","时","秒"
        
        Dim d As Date = Date.now
        Dim FirstDay As Date = New Date(d.year, d.month,1) '第一天
        Dim LastDay As Date = New Date(d.year, d.month,Date.DaysInMonth(d.year, d.month)) '最后一天
        Dim q As Integer = (Date.Today.Month - 1) \ 3 + 1 '计算现在是第几个季度
        Dim y As Integer = Date.Today.Year
        Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) '获取本季度的第一天
        Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) '获取本季度的最后一天
        If e.DataRow("周期") IsNot Nothing  Then
            If e.DataRow("周期")="每月最后一天" Then
                e.DataRow("周期时间")= Format(LastDay, "g")
            End If
            If e.DataRow("周期")="每月第一天" Then
                e.DataRow("周期时间")= FirstDay
            End If
            If e.DataRow("周期")="本季度第一天" Then
                e.DataRow("周期时间")= dt1
            End If
            If e.DataRow("周期")="本季度最后一天" Then
                e.DataRow("周期时间")= dt2
            End If
            'Else
            'e.DataRow("周期时间")=e.DataRow("初始时间")
        End If
        e.DataRow("到期时间")=e.DataRow("周期时间").AddSeconds(e.DataRow("时")*60*60+e.DataRow("分")*60+e.DataRow("秒"))
        
    Case "分","时","秒","日"
        Dim w As Integer = Date.Today.DayOfWeek '算出今天是星期几
        Dim w1 As Date = Date.Today.AddDays(-w) '获取本周的第一天
        Dim w2 As Date = Date.Today.AddDays(e.DataRow("日") - w) '获取本周的最后一天
        If e.DataRow("日") IsNot Nothing Then
            e.DataRow("周期时间")=w2
            ''Else
            ''e.DataRow("周期时间")=e.DataRow("初始时间")
        End If
        e.DataRow("到期时间")=e.DataRow("周期时间").AddSeconds(e.DataRow("时")*60*60+e.DataRow("分")*60+e.DataRow("秒"))
End Select



[此贴子已经被作者于2021/5/3 1:49:20编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

1、月最后一天+1就是下个月的第一天:http://www.foxtable.com/webhelp/topics/0260.htm

Dim d As Date = #4/30/2021#
Dim
 d1 As Date = d.
AddDays(1'加上40天
Output.Show(
d1)

重新使用DaysInMonth计算新的一个月的最后一天即可

2、一周7天,这个周三+7就是下个周三,同样参考上面AddDays用法

 回到顶部