VB定时执行

ggqiang 2009-08-06 02:09:24
小弟菜鸟 现在在VB里写好一段导入数据的代码,要定时每天的23点执行一次,知道VB里有TIMER可以实现,单是具体如何实现每天23点执行一次 ,忘高人指教,尽可能详细点。谢谢!!!!
...全文
1515 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2011-05-23
  • 打赏
  • 举报
回复
每秒钟检查下就行了。

以下是插件提示的,不好意思哦。

ggqiang
等 级:
结帖率:20.00%
该用户人品较差,结贴率不及格。以下是详细信息:
*总发帖:10
*正常结贴:1
*未结贴:8
*无满意结贴:1
*正常结贴率:10.00%
*无满意结贴率:10.00%




论坛签名======================================================================

当您的问题得到解答后请及时结贴.

http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html

如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖

如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx

如何给自己安装一双火眼金睛?
http://blog.csdn.net/sysdzw/archive/2011/04/07/6306619.aspx
cike_1111 2011-05-23
  • 打赏
  • 举报
回复
思路
只是担心错过导入的话可以这样
到达23点的时候执行1次程序 在导入数据的代码中做个记录 全部导入完成后变量变为TRUE
时间间隔1秒3秒都可以 要保证导入数据成功后才改变这个变量 当变量为TRUE状态时 则不再导入数据
当时间过23点之后 变量恢复FLASE状态

  • 打赏
  • 举报
回复
这坟挖的……
再灌水一次
ningweidong 2011-05-20
  • 打赏
  • 举报
回复
用定时器控件,也可以用计划任务
flfq 2011-05-20
  • 打赏
  • 举报
回复
楼上别挖坟了
WAHAHA 2011-05-20
  • 打赏
  • 举报
回复
不知道有没有结贴,不管了,发了再说: 如果把Timer的Inteval属性设得很小(比如1000或更小),是不是很占系统资源?有谁在配置低的机器上试过吗?
terry20080416 2009-08-11
  • 打赏
  • 举报
回复
如果是用SQL 我建议直接用SQL代理来实现
如果只用于MS 建议用WINDOWS自带的来实现
方便一点
贝隆 2009-08-08
  • 打赏
  • 举报
回复
使用DateDiff来计算时间间隔,不用使用“大于”等符号来判断。
zhuhuofong 2009-08-08
  • 打赏
  • 举报
回复
Timer1.Interval = 1000
If Time = "23:00:00" The' 这样子定的话只在Time = "23:00:00"的时候执行一次


DengXingJie 2009-08-08
  • 打赏
  • 举报
回复
不知是怎么个导入法,直接在SQL SERVER中加个任务,每天定时运行(如果用的是SQL SERVER的话)
mmxx2024 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jhone99 的回复:]
VB codeDim blnRunAsBooleanPrivateSub Form_Load()
Timer1.Interval=60000
Timer1.Enabled=True
blnRun=FalseEnd SubPrivateSub Timer1_Timer()IfTime>"23:00:00"AndNot blnRunThen
blnRun=Tru¡­
[/Quote]


可以实现
挨踢小胖 2009-08-08
  • 打赏
  • 举报
回复
用timer每秒检测时间按,太占资源,建议使用MS自己的计划任务
Tiger_Zhao 2009-08-07
  • 打赏
  • 举报
回复
Option Explicit

Private m_NextImportTime As Date

Private Sub Form_Load()
m_NextImportTime = Date + #11:00:00 PM#

Timer1.Interval = 600
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
If Now() >= m_NextImportTime Then
m_NextImportTime = m_NextImportTime + 1
Call Import
End If
End Sub

还有在 Import 中最好判断一下今天的数据是否已经导入,以对应:执行完导入后、关闭程序、再运行程序的情况。
bdzwj 2009-08-07
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Timer1.Interval = 60000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
static fRuned as boolean
If Time > "23:00:00" And not fRuned Then
bruned = True
Call yourfunction
End If
End Sub
cqq_chen 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bestbadgod 的回复:]
用操作系统提供的任务功能
[/Quote]
最容易实现的办法....
煤油灯 2009-08-07
  • 打赏
  • 举报
回复
用定时器控件
fzx4936 2009-08-07
  • 打赏
  • 举报
回复
天气太热
jhone99 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 asdfy 的回复:]
通过楼上等方法判断时间——执行代码。在执行代码块结尾加个Timer1.Enabled=false……

是否可行?
[/Quote]

如果每天关闭第二天重新运行没有问题,如果不关闭运行,第二天启动timer就有问题了
chinaboyzyq 2009-08-07
  • 打赏
  • 举报
回复
Option Explicit
Dim dtNextTime As Date

Private Sub Form_Load()
Timer1.Interval = 500
dtNextTime = Format(Now, "yyyy-MM-dd ") & "23:00:00"
End Sub

Private Sub Timer1_Timer()

If Now >= dtNextTime Then
Timer1.Enabled = False

''sendPCdata '发送上位机数据

dtNextTime = DateAdd("d", 1, dtNextTime)
Timer1.Enabled = True
End If
End Sub
贝隆 2009-08-07
  • 打赏
  • 举报
回复
定时器控件是最简单的,不过可能有点时间偏差。
加载更多回复(21)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧