运行 Ms Access 中特定时间范围内特定日期的宏
Running a macro a specific day at a specific time range in Ms Access
我的 VBA 函数在一个模块中。我从宏中调用我的函数。我在 autoexec 宏中有它。所以每次打开我的数据库时,它 运行 就是这个函数。到目前为止效果很好。
现在我正在尝试在特定时间范围内的星期一早上使函数 运行 仅,例如:星期一上午 8 点 - 12:00PM ,不是每天因为数据库需要更新只在星期一..我找不到办法做到这一点。我的功能代码如下:
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 还很陌生,所以很难理解它...
您需要使用 Weekday()
函数和时间来检查其工作日的当前日期,正如@HansUP 所建议的那样。关键部分是确保程序只 运行 一次,而不是每次打开应用程序时。因此,您需要做的是确保该应用程序知道您那天是否运行它。
我的解决方案如下所示:
- 我会有一个带有一个字段的 table,即
Boolean
类型的 'ExectureProcedure' 并且只有一行,所以 table 看起来像这样:
========================
| ID | ProcedureExecuted |
|====|===================|
| 1 | False |
========================
- 每次您 运行 检查条件并且时间和工作日 不 满足您的条件时,您将此 table 中的值设置为
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
标志为假,程序只会运行,只有当日期不符合您的条件时才能设置,所以应用程序会运行 下次什么时候会。
我希望这个解决方案很清楚,因为我没有时间编写实际的 VBA 代码,但从我的头脑来看,您将需要使用这些功能:Weekday
, DLookup
。如果您有困难,post 请在评论中提出。
我的 VBA 函数在一个模块中。我从宏中调用我的函数。我在 autoexec 宏中有它。所以每次打开我的数据库时,它 运行 就是这个函数。到目前为止效果很好。
现在我正在尝试在特定时间范围内的星期一早上使函数 运行 仅,例如:星期一上午 8 点 - 12:00PM ,不是每天因为数据库需要更新只在星期一..我找不到办法做到这一点。我的功能代码如下:
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 还很陌生,所以很难理解它...
您需要使用 Weekday()
函数和时间来检查其工作日的当前日期,正如@HansUP 所建议的那样。关键部分是确保程序只 运行 一次,而不是每次打开应用程序时。因此,您需要做的是确保该应用程序知道您那天是否运行它。
我的解决方案如下所示:
- 我会有一个带有一个字段的 table,即
Boolean
类型的 'ExectureProcedure' 并且只有一行,所以 table 看起来像这样:
======================== | ID | ProcedureExecuted | |====|===================| | 1 | False | ========================
- 每次您 运行 检查条件并且时间和工作日 不 满足您的条件时,您将此 table 中的值设置为
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
标志为假,程序只会运行,只有当日期不符合您的条件时才能设置,所以应用程序会运行 下次什么时候会。
我希望这个解决方案很清楚,因为我没有时间编写实际的 VBA 代码,但从我的头脑来看,您将需要使用这些功能:Weekday
, DLookup
。如果您有困难,post 请在评论中提出。