Открытие отчета на основе двух значений даты в форме, если они существуют - PullRequest
0 голосов
/ 28 мая 2019

У меня есть форма (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#)

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

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

1 Ответ

1 голос
/ 28 мая 2019

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

OpenReport

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...