在 Ms Access 中的特定时间范围内的特定日期运行宏
Posted
技术标签:
【中文标题】在 Ms Access 中的特定时间范围内的特定日期运行宏【英文标题】:Running a macro a specific day at a specific time range in Ms Access 【发布时间】:2015-05-13 17:13:26 【问题描述】:我在一个模块中有我的 VBA 函数。我从宏中调用我的函数。我在 autoexec 宏中有它。因此,每次打开我的数据库时,它都会运行该功能。到目前为止效果很好。
现在我试图让函数仅在星期一早上的特定时间范围内运行,例如:星期一上午 8 点至下午 12:00 之间,不是每天数据库需要仅在星期一更新。我找不到办法。我的功能代码如下:
Public Function DownloadFromS()
On Error GoTo DownloadErrorHandler
Dim stDocName As String
stDocName = "getThemFromS"
DoCmd.RunMacro stDocName
Exit_DownloadS:
Exit Function
DownloadErrorHandler:
MsgBox "Sorry Sto is offline, re-establish our connection"
Resume Exit_DownloadS
End Function
我对 VBA 还很陌生,所以有点难以理解它...
【问题讨论】:
【参考方案1】:正如@HansUP 建议的那样,您需要使用Weekday()
函数和时间检查当前日期的工作日。关键部分是确保程序只运行一次,而不是每次打开应用程序时。因此,您需要做的是确保该应用知道您之前是否在当天运行过它。
我的解决方案如下所示:
我将有一个包含一个字段的表,即Boolean
类型的“ExectureProcedure”,并且只有一行,因此该表如下所示:
每次运行检查条件以及时间和工作日是否不满足您的条件,您将此表中的值设置为======================== | ID | ProcedureExecuted | |====|===================| | 1 | False | ========================
False
,否则您离开。
只有在过程完成后才将值设置为True
。
伪代码,仅作说明:
If [ExecuteConditionsOK] = True AND [ProcedureExecuted] = False Then Run your procedure Set [ProcedureExecuted] to True Elseif [ExecuteConditionsOK] = False Then Set [ProcedureExecuted] to False End if
简而言之,程序只有在ProcedureExecuted
标志为false的情况下才会运行,只有在日期不满足你的条件时才能设置,所以应用程序会在下次运行时运行它。
我希望这个解决方案很清楚,因为我没有时间编写实际的 VBA 代码,但从我的脑海中,您将需要使用这些函数:Weekday
、DLookup
。如果你有困难,请在 cmets 中发布。
【讨论】:
以上是关于在 Ms Access 中的特定时间范围内的特定日期运行宏的主要内容,如果未能解决你的问题,请参考以下文章
带有空格和范围的 MS Access VBA acImport 工作表名称