Ms access 在VBA中创建计划动作
我正在写一些东西,它将根据用户输入对计划的延迟执行操作。我想我已经很接近了,但它的表现并不像我预期的那样。我总是得到一个消极的结果。这就是我到目前为止所做的:Ms access 在VBA中创建计划动作,ms-access,vba,Ms Access,Vba,我正在写一些东西,它将根据用户输入对计划的延迟执行操作。我想我已经很接近了,但它的表现并不像我预期的那样。我总是得到一个消极的结果。这就是我到目前为止所做的: If SchedMsgBox = vbNo Then Exit Sub Else Delay = "Y" CurTime = Now() DeployDt = Format(Me.cmbSchedDT.Value, "mm/dd/yyyy") ' MsgBo
If SchedMsgBox = vbNo Then
Exit Sub
Else
Delay = "Y"
CurTime = Now()
DeployDt = Format(Me.cmbSchedDT.Value, "mm/dd/yyyy")
' MsgBox ("DeployDate: " & DeployDt)
DeployTime = Format(Me.lstSchedTime.Value, "hh:mm AMPM")
' MsgBox ("DeployTime: " & DeployTime)
DeployDateTime = DeployDt & " " & DeployTime
' MsgBox ("DeployDateTime: " & DeployDateTime)
' DelayTimeMin = DateDiff("n", CurTime, DeployDateTime)
DelayTime = DateDiff("s", CurTime, DeployDateTime)
' MsgBox ("DelayTimeInSec: " & DelayTime)
End If
你知道我做错了什么吗
*延迟时间是程序将延迟的秒数的最终乘积。
部署时间和部署日期来自用户输入 如果问题是您从此行获得的
DelayTime
值为负值
DelayTime=DateDiff(“s”、CurTime、DeployDateTime)
。。。如果DeployDateTime
早于CurTime
,这将是合理的
下面是一个即时窗口示例
CurTime=Now()
? 短时间
2013年12月16日上午11:57:06
DeployDateTime=“2013-12-16 11:30”
? DateDiff(“s”,CurTime,DeployDateTime)
-1626
尽管在我的示例和您的代码中,DeployDateTime
是文本而不是日期/时间数据类型,DateDiff
在计算差异时通过将其转换为日期/时间来进行协作。我不认为这种类型的差异会在这里造成什么问题
也许您只需要交换2次参数的顺序
?DateDiff(“s”,DeployDateTime,CurTime)
1626
Hans-我想你是对的,我把订单倒过来了。但我的另一个问题是,结果似乎仍然不正确。我将DeployDateTime(Datediff函数中的第一个)设置为比CurrTime早1分钟,结果是34800。请确认您正在提供所需的值。这个表达式返回60:DateDiff(“s”,“2013-12-16 11:29”,“2013-12-16 11:30”)
我做了一个更改,去掉了CurTime=Now()并在DateDiff部分使用了Now()。不知道为什么,但很高兴它起作用了。。。。谢谢你的帮助,非常感谢!