У меня есть форма с несколькими полями, которые открывают отчет в соответствии со значениями в моих списках. Это работает, но меня попросили указать поле «Эффективная дата», чтобы можно было ввести диапазон дат.Между двумя датами в vba для ms access 2010
Я добавил два текстовых поля (txtReqCreationStartDate
и txtReqCreationEndDate
) для начала и окончания.
Я пробовал делать между ... и в запросе, но тогда мои поля со списком не работают.
Я никогда не использовал SQL, но нашел это онлайн и ввел его в код для Apply Filter при нажатии кнопки, но я получаю все записи. Другие пытались помочь, но я всегда получаю все записи.
Здесь представлен весь код события On Click.
Private Sub cmdVacanciesWithNoRequisitionParameters_Click()
On Error GoTo cmdVacanciesWithNoRequisitionParameters_Click_Err
strSQL = "SELECT * FROM qryVacanciesWithNoRequisition WHERE " _
& "DateValue([Effective Date]) Between #" & Format([txtReqCreationStartDate], "yyyy-mm-dd") & "# And #" & Format([txtReqCreationEndDate], "yyyy-mm-dd") & "#;"
'Person Number
If Not IsNull(Me.cboPersonNumber) Then
strFilter = strFilter & " AND [Person Number] Like """ & Me.cboPersonNumber & """ "
End If
'Person Name
If Not IsNull(Me.cboPersonName) Then
strFilter = strFilter & " AND [Person Name] Like """ & Me.cboPersonName & """ "
End If
'Job Code
If Not IsNull(Me.cboJobCode) Then
strFilter = strFilter & " AND [Job Code] Like """ & Me.cboJobCode & """ "
End If
'Person Number
If Not IsNull(Me.cboBusinessUnit) Then
strFilter = strFilter & " AND [Business Unit] Like """ & Me.cboBusinessUnit & """ "
End If
'Department
If Not IsNull(Me.cboDepartment) Then
strFilter = strFilter & " AND [Department] Like """ & Me.cboDepartment & """ "
End If
'Supervisor
If Not IsNull(Me.cboSupervisor) Then
strFilter = strFilter & " AND [Supervisor] Like """ & Me.cboSupervisor & """ "
End If
'Job Title
If Not IsNull(Me.cboJobTitle) Then
strFilter = strFilter & " AND [Job Title] Like """ & Me.cboJobTitle & """ "
End If
'If the report is closed, open the report
If SysCmd(acSysCmdGetObjectState, acReport, "rptVacanciesWithNoRequisition") <> acObjStateOpen Then
DoCmd.OpenReport "rptVacanciesWithNoRequisition", acPreview, qryVacanciesWithNoRequisition
End If
'if report was open, use filter
With Reports![rptVacanciesWithNoRequisition]
.Filter = Mid(strFilter, 6)
.FilterOn = True
End With
cmdVacanciesWithNoRequisitionParameters_Click_Exit:
Exit Sub
cmdVacanciesWithNoRequisitionParameters_Click_Err:
MsgBox Error$
Resume cmdVacanciesWithNoRequisitionParameters_Click_Exit
End Sub
Заранее благодарим за помощь.
* (Вам нужно очистить форматирование немного больше, пожалуйста. Не все «под» отображаются как «код».) ### Если сказать, я бы предположил, что вы 'Debug.print'' strFilter' после того, как вы полностью сгенерировали его, чтобы вы могли * видеть *, что в готовой строке содержится. ## Также, почему вы используете 'Mid (strFilter, 6)'? ## Если вы «получаете все записи», должно быть что-то не так с вашим фильтром. Продолжайте работать, это ... вы * должны быть * в основном на правильном пути. –