当前运行效果图:
此主题相关图片如下: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