У меня есть запрос, в котором я использую оператор между выводом данных для диапазона дат. У меня есть встроенная функция VBA, которая будет оценивать последнюю дату (Макс. Дата) в таблице (чтобы получить первую дату для промежутка) и другую функцию для оценки даты остановки (последняя дата между) ... Итак, моя между датой выглядит так: Между hhMaxDte() И hhLastDte()MS Access функции диапазона времени замедления запроса
По какой-то причине наличие этих двух функций в моем выражении между двумя операциями занимает 8 раз больше времени для выполнения запроса, чем если бы я вручную вручную вводил фактические даты В себе. Кто-нибудь знает, почему это так и как я могу динамически выполнять подобный процесс, но занимать такое же количество времени, чтобы запустить запрос, например, когда я вручную вводил даты? Мой код функций приведен ниже:
Function hhMaxDte()
If DMax("row_date", "HH_CIB_Raw_Data") + 1 = Date Then
hhMaxDte = 0
Else
hhMaxDte = DMax("row_date", "HH_CIB_Raw_Data") + 1
End If
End Function
Function hhLastDte()
If DMax("row_date", "HH_CIB_Raw_Data") + 1 = Date Then
hhLastDte = 0
Else
hhLastDte = Date - 1
End If
End Function
Основываясь на вашем описании, я предполагаю, что эти две функции выполняются для каждой отдельной записи, даже если они не нужны, поскольку они не используют никаких конкретных параметров записи. – SunKnight0
Да, я просто наткнулся на то, что вы здесь говорите: http://allenbrowne.com/QueryPerfIssue.html – wlfente
Функции будут вызываться один раз только, поскольку у них нет параметров, поэтому, если вы отрегулируете замену запроса функции с фиксированными значениями, вы увидите почти такой же результат. Однако, без вашего запроса, вы оставляете нас угадывающими в дикой природе. Возможно, вы пропустили индекс в поле даты. – Gustav