以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何按“定时表”的设定时间执行?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158133)

--  作者:lin98
--  发布时间:2020/11/9 15:23:00
--  如何按“定时表”的设定时间执行?
1.本实例想实现,按“定时表”设计时间,对“表A定时操作窗体和表B定时操作窗体”上进行操作,执行完成提示“已完成XXX操作”的提示?
2.“定时表”的“定时日期”字段怎么写?如“每月25日执行,每月月底执行,每隔10天执行,每隔三个月执行”。

看帮助“计划管理,和到期实例”还是没能做出来,请老师指导,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口计时器 - 副本.foxdb



计划管理

计划用于按照指定的时间间隔,执行特定的代码。

1、在“管理项目”功能区,单击下面的按钮:

图片点击可在新窗口打开查看

2、出现计划管理窗口,可以在这里增加、删除、设置计划

图片点击可在新窗口打开查看

除了名称和代码外,计划的属性还包括:

间隔:    计划执行的时间间隔,单位为毫秒。
执行:    是否执行计划
允许暂停:是否允许用户通过单击菜单中的“计划暂停”按钮,来暂停执行此计划

3、在单击“确定”按钮退出计划管理窗口后,所设置的计划即刻生效,如果要临时暂停计划的执行,可单击菜单中的计划暂停按钮:

图片点击可在新窗口打开查看

示例一

如果你希望每5分钟自动保存一次数据,可以增加一个计划,计划的执行间隔为300000(毫秒),也就是5分钟,计划的代码设为:

For Each dt As DataTable In DataTables
    dt.Save()

Next

示例二

假定希望系统每十分钟自动备份一次项目,可以增加一个计划,计划的执行间隔600000(毫秒),也就是10分钟,计划的代码为:

Static dt As Date \'静态变量,用于保存上次备份的时间
Dim
 tp As TimeSpan
tp
 = Date.Now - dt
If
 tp.TotalHours >= 1 Then \'如果距离上次备份已经超过一个小时
    dt = Date.Now
    Syscmd.Project.Backup("c:\\data"True\'自动备份到c:\\data目录

End
 If


--  作者:有点蓝
--  发布时间:2020/11/9 15:44:00
--  
这个时间设置太随意,想了一下,我也做不了
--  作者:lin98
--  发布时间:2020/11/10 11:55:00
--  
老师,先实现二个功能:

1.“
表A定时操作窗体‘“,定时在每月25执行  “每月25执行”按键事件,怎么写?执行完成提示“已完成XXX操作”的提示?
2.在“表B定时操作窗体”上定时在每月月底执行  “每月月底执行”按键事件,怎么写?

--  作者:有点蓝
--  发布时间:2020/11/10 12:09:00
--  
到窗口计时器处理,计时间隔设置为1小时,即1000*60*60。

然后计时器事件判断当天是否25号0时,如果是,则执行按钮事件:http://www.foxtable.com/webhelp/topics/2309.htm


--  作者:lin98
--  发布时间:2020/11/10 15:03:00
--  
老师,试一下,由于理解不到位,没达到效果,请老师指导,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口计时器 - 副本.foxdb




--  作者:有点蓝
--  发布时间:2020/11/10 15:07:00
--  
1、没有启用:http://www.foxtable.com/webhelp/topics/1301.htm
2、没看到有任何和计时日期判断有关的代码:http://www.foxtable.com/webhelp/topics/1322.htm

--  作者:lin98
--  发布时间:2020/11/10 22:29:00
--  
Dim d1 As Date = Date.Today
If   d1 = Date.Today.AddDays(25)  Then
    Dim btn As WinForm.Button = Forms("表A定时操作").Controls("Button2")
Else
    Dim btn As WinForm.Button = Forms("表B定时操作").Controls("Button3")
End If

上面代码还有问题

--  作者:有点蓝
--  发布时间:2020/11/10 22:40:00
--  
if Date.Today.day = 25 andalso Date.now.Hour = 0 then
Dim btn As WinForm.Button = Forms("表A定时操作").Controls("Button2")
btn.PerformClick()
end if

到每个窗口的计时器写代码处理自己的业务,不要在A窗口计时器处理其它窗口

--  作者:lin98
--  发布时间:2020/11/11 10:13:00
--  
1.测试还是没效果。我把每月25天,改为11天,想测试一下效果,今天11日,刚好有11天,但测试没有效果,哪些出问题,请老师指导,谢谢
2.还有窗体属性计时器那个设计,与每月25天只一次就好,不要每隔一段时就执行。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口计时器 - 副本.foxdb



--  作者:有点蓝
--  发布时间:2020/11/11 10:20:00
--  
1、8楼的代码是指定25日0时执行一次代码。如果不是0时是不执行的,其它事件测试可以改,比如中午12时:if Date.Today.day = 25 andalso Date.now.Hour = 12 then

2、由于时间间隔是一个固定的值,而每个月份的天数不定,启动服务的时间也无法确定,没有办法直接设置间隔为25天。只能是设定一个比较小的时间间隔内进行判断,8楼的代码虽然每1小时就判断一次时间,但是按钮肯定只会执行一次,因为1小时的间隔内0时只可能出现一次