Открытие отчета на основе двух значений даты в форме, если они существуют

У меня есть форма (frmReports) с двумя несвязанными текстовыми полями, которые используются для ввода дат. Один ОТ, другой ДО.

Они используются для фильтрации отчета (rptAllCommissions). Если в текстовых полях есть значения, он фильтрует. Если их нет или есть одна дата, а не обе, создается оператор WHERE для открытия отчета. Вот код:

Private Sub cmdCommissions_Click()
    Dim strDateFrom As String
    Dim strDateTo As String
    Dim strWhere As String

    Const strcJetDate = "\#mm/dd/yyyy\#"

    strDateFrom = "[ClosingDate]"

    If IsDate(Me.txtFrom) Then
        strWhere = "(" & strDateFrom & " > = " & Format(Me.txtFrom, strcJetDate) & ")"
    End If
    If IsDate(Me.txtTo) Then

        If strWhere <> vbNullString Then
            strWhere = strWhere & " AND "
        End If

        strWhere = strWhere & "(" & strDateFrom & " <= " & Format(Me.txtTo + 1, strcJetDate) & ")"
    End If

    If CurrentProject.AllReports("rptAllCommissions").IsLoaded Then
        DoCmd.Close acReport, "rptAllCommissions"
    End If
    Debug.Print strWhere

    DoCmd.OpenReport "rptAllCommissions", acViewReport, strWhere

Exit_Handler:
    Exit Sub

Err_Handler:
    If Err.Number <> 2501 Then
        MsgBox "Error" & Err.Number & ": " & Err.Description, vbExclamation, "Cannot Open Report!"
    End If
    Resume Exit_Handler

End Sub

Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, что я пытаюсь сделать, отчет никогда не фильтрует записи на основе оператора WHERE, созданного вышеуказанной процедурой. При попытке отладки выдает:

Если введены две даты: ([ClosingDate] >=#04/01/2019#) AND ([ClosingDate] <= #05/25/2019#)
Если введена одна дата: ([ClosingDate] >=#05/13/2019#)

Мне это кажется правильным, но это не фильтрация. Какого черта я делаю неправильно?

Обновлено: Я должен отдать должное человеку, который написал оригинальную программу, но я не могу найти, где я ее взял. Извиняюсь! Но кто бы это ни был, кто изначально написал программу, СПАСИБО!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

WhereCondition должен быть 4-м аргументом в методе OpenReport. У вас есть это в месте аргумента FilterName.

OpenReport

Если бы все наши проблемы были такими простыми!

Eedz 28.05.2019 17:38

Другие вопросы по теме