MS Access — Несколько общих критериев запросов в диапазоне дат с отметками времени

#date-range #ms-access-2016 #criteriaquery

Вопрос:

MS Access 2016,

У меня есть несколько запросов — примерно 120 — которые собирают временную историю на основе критериев даты, которые я в настоящее время обновляю вручную для каждого запроса — >=#8/1/2021# И <#9/1/2021# — за август 2021 года.

Каким было бы лучшее решение обновить это в одном месте, чтобы все запросы могли ссылаться на этот диапазон дат?

Пример запроса: (Обычно 43 точки параметров)

 SELECT 
    History1HourAverage.TimeStamp, 
    History1HourAverage.Parameter001, 
    History1HourAverage.Value001, 
    History1HourAverage.Parameter002, 
    History1HourAverage.Value002, 
    History1HourAverage.Parameter003, 
    History1HourAverage.Value003, 
    History1HourAverage.Parameter004, 
    History1HourAverage.Value004
FROM History1HourAverage
WHERE 
    (
        (
            ***(History1HourAverage.TimeStamp)>=#8/1/2021#
            AND (History1HourAverage.TimeStamp)<#9/1/2021#
        )*** 
        AND ((History1HourAverage.Parameter001)="10S8MApp.nvoSpaceTemp") 
        AND ((History1HourAverage.Parameter002)="10S9MApp.nvoSpaceTemp") 
        AND ((History1HourAverage.Parameter003)="10S10MApp.nvoSpaceTemp") 
        AND ((History1HourAverage.Parameter004)="10S11MApp.nvoSpaceTemp")
    );
 

Спасибо

Ответ №1:

Пара вариантов:

Любой

Добавьте таблицу под названием DateRange с двумя полями, дата начала и дата окончания. Введите в эту таблицу одну запись с диапазоном дат, который вы хотите использовать для своих запросов. Отредактируйте каждый из ваших запросов и включите таблицу диапазона дат. Установите критерии для запроса в WHERE History1HourAverage.TimeStamp >= DateRange.StartDate And History1HourAverage.TimeStamp < DateRange.EndDate

Альтернативно

Создайте модуль VBA с двумя функциями

 Public Function StartDate() As Date
    StartDate = #8/1/2021#
End Function

Public Function EndDate() As Date
    EndDate = #9/1/2021#
End Function
 

Установите критерии запроса для запроса в WHERE History1HourAverage.TimeStamp >= StartDate() And History1HourAverage.TimeStamp < EndDate()

Когда вы хотите использовать другой диапазон дат, вы либо (1) редактируете данные в таблице диапазонов дат, либо (2) редактируете свои функции, чтобы вернуть новые даты.

Комментарии:

1. Сработало идеально. Спасибо!