以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 有没有办法动态增加计划任务呢?也就是项目发布后,用户可以根据需要自定义设定计划。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164242) |
-- 作者:cnsjroom -- 发布时间:2021/4/30 22:51:00 -- 有没有办法动态增加计划任务呢?也就是项目发布后,用户可以根据需要自定义设定计划。 有没有办法动态增加计划任务呢?也就是项目发布后,用户可以根据需要自定义设定计划。 计划任务的管理: 首先新增一个全局变量 cishu 默认值为 0 根据需要系统预设20个计划任务,命名为“jihua1,jihua2,jihua3……,jihua20” 每个计划运行的时间均以毫秒进行计算。 如:jihua1代码如下: If vars("cishu") = 0 Then Dim Proc As New Process \'定义一个新的Process Proc.File = "http://192.168.43.112:8989/jihua.htm" \'指定要打开的网页地址 Proc.Start() vars("cishu")=vars("cishu")+1 End If
Jihua.htm代码为: Dim d As Date = Date.now If d.DayOfWeek = 5 Then If d.Hour = 22 Then If d.Minute= 26 Then MessageBox.Show("程序即将进行备份") vars("cishu")=0 End If End If End If 项目有一内部函数表 有网页名 代码 网页类型 三个字段 网页名:jihua (也是函数名) 代码: Dim d As Date = Date.now If d.DayOfWeek = 5 Then If d.Hour = 22 Then If d.Minute= 26 Then MessageBox.Show("程序即将进行备份") vars("cishu")=0 End If End If End If 网页类型:htm |
-- 作者:有点酸 -- 发布时间:2021/5/1 8:33:00 -- 实际上只需一个计划就行了,定时循环函数表。 建议函数表增加一个两列: 1、上次执行时间 2、执行间隔 每次循环,比较当前时间和上次执行时间的价格,如果超过执行时间,就开始执行。
|
-- 作者:cnsjroom -- 发布时间:2021/5/1 12:42:00 -- 回复:(有点酸)实际上只需一个计划就行了,定时循环... 老师 是这个思路么? 以下操作系摸索写法,感觉后续计划执行代码有点繁琐了,老师有没有比较简洁的写法呢? (比如直接输入执行间隔即可自动计算到期时间 然后检测系统时间是否等于到期时间,如果等于那就运行指定的计划代码,) (当前难处在于不知道怎么计算选定的执行间隔转化为秒数,比如每周一,每周三,每季度第一天,每月最后一天等,如果不折算并计算到期时间,那就要回到我如下写法,感觉有点繁琐哈!) 已经在函数表里面新增了一个计划逻辑列 初始时间 执行间隔 到期时间(初始时间+执行间隔) 1、在计划管理中写入:(设定2000运行时) Functions.Execute("计划") 2、然后在函数表里写入 函数名为“计划”数据行 代码如下: Dim d As Date = Date.today Dim t 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 y As Integer = Date.Today.Year Dim q As Integer = (Date.Today.Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 output.Show(dt2) Dim w As Integer = Date.Today.DayOfWeek \'算出今天是星期几 Dim w1 As Date = Date.Today.AddDays(-w) \'获取本周的第一天 Dim w2 As Date = Date.Today.AddDays(6 - w) \'获取本周的最后一天 For Each dr As DataRow In DataTables("内部函数表").DataRows If dr("计划")=True Then If dr("周期")="每月第一天" Then If Date.today=FirstDay And t.Hour="17" Then MessageBox.Show("1") End If Else If dr("周期")="每月最后一天" Then If Date.today=LastDay And t.Hour="14" Then MessageBox.Show("33") End If Else If dr("周期")="本季度" Then If Date.today=dt2 And t.Hour="17" Then MessageBox.Show("333") End If Else If dr("周期")="每周一" Then If w=1 And t.Hour="17" Then MessageBox.Show("周一") End If Else If dr("周期")="每周二" Then If w=2 And t.Hour="17"Then MessageBox.Show("周二") End If Else If dr("周期")="每周三" Then If w=3 And t.Hour="14"Then MessageBox.Show("周三") End If Else If dr("周期")="每周四" Then If w=4 And t.Hour="17"Then MessageBox.Show("周四") End If Else If dr("周期")="每周五" Then If w=5 And t.Hour="17"Then MessageBox.Show("周五") End If Else If dr("周期")="每周六" Then If w=6 And t.Hour="17"Then MessageBox.Show("周六") End If Else If dr("周期")="每周日" Then If w=0 And t.Hour="14"Then MessageBox.Show("周日") End If End If End If Next 3、可根据需要再另外新建一个计划管理窗体,主要用于计划、周期字段值的更改 上述操作后初步可以实现计划字段是true时候,满足条件时弹出对应的提示内容。 [此贴子已经被作者于2021/5/2 14:45:59编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/5 9:22:00 -- 可以再增加一些辅助列,比如逻辑列:是否每月第一天,是否每月最后一天,是否周一,是否周二,...然后根据需要勾选 那么执行的时候,先判断当前日期,如果是每月第一天,那么就查询“是否每月第一天”勾选的行执行,如果是周一,就查询“是否周一”勾选的行执行
|