Foxtable(狐表)用户栏目专家坐堂 → 如何按“定时表”的设定时间执行?


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

主题:如何按“定时表”的设定时间执行?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
如何按“定时表”的设定时间执行?  发帖心情 Post By: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


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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/9 15:44:00 [只看该作者]

这个时间设置太随意,想了一下,我也做不了

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2020/11/10 11:55:00 [只看该作者]

老师,先实现二个功能:

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

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/10 12:09:00 [只看该作者]

到窗口计时器处理,计时间隔设置为1小时,即1000*60*60。

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


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2020/11/10 15:03:00 [只看该作者]

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




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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By: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

上面代码还有问题

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2020/11/11 10:13:00 [只看该作者]

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



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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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时只可能出现一次

 回到顶部
总数 16 1 2 下一页