Просто создайте такую таблицу, query_log с полями для query_name (краткий текст) и start_datetime (дата / время).Затем создайте запрос на добавление для запуска перед каждым запросом.Используйте параметризацию для передачи соответствующих значений:
SQL (сохранить ниже как объект запроса с использованием значения по умолчанию Now()
, при условии, что создан query_log)
PARAMETERS Q_Param Text(255);
INSERT INTO query_log(query_name, start_datetime)
VALUES (Q_Param, Now());
VBA (выполнить каждый запрос и затем запрос действия выше с параметризацией)
Function RunAllQueriesNow()
Dim qdef As QueryDef
Set qdef = CurrentDb.QueryDefs("mySavedQuery")
DoCmd.SetWarnings False
qdef!Q_Param = "Query 1" ' BIND PARAM
qdef.Execute dbFailOnError ' LOG START
DoCmd.OpenQuery "Query 1" ' RUN QUERY
qdef!Q_Param = "Query 2"
qdef.Execute dbFailOnError
DoCmd.OpenQuery "Query 2"
qdef!Q_Param = "Query 3"
qdef.Execute dbFailOnError
DoCmd.OpenQuery "Query 3"
qdef!Q_Param = "Query 4"
qdef.Execute dbFailOnError
DoCmd.OpenQuery "Query 4"
qdef!Q_Param = "Query 5"
qdef.Execute dbFailOnError
DoCmd.OpenQuery "Query 5"
DoCmd.SetWarnings True
Set qdef = Nothing
End Function
Или подход DRY-er:
Function RunAllQueriesNow()
Dim qry As Var
Dim qdef As QueryDef
Set qdef = CurrentDb.QueryDefs("mySavedQuery")
DoCmd.SetWarnings False
For Each qry in Array("Query 1", "Query 2", "Query 3", "Query 4", "Query 5")
qdef!Q_Param = qry ' BIND PARAM
qdef.Execute dbFailOnError ' LOG START
DoCmd.OpenQuery qry ' RUN QUERY
Next qry
DoCmd.SetWarnings True
Set qdef = Nothing
End Function