2016-07-11 1 views
0

내 콤보 상자의 값에 따라 보고서를 여는 여러 개의 콤보 상자가있는 양식이 있습니다. 이 작동하지만 날짜 범위를 입력 할 수 있도록 유효 날짜 필드에 옵션을 제공하도록 요청 받았습니다.vba for ms 액세스 2010 년 2 월 사이

두 개의 시작 및 끝 텍스트 상자 (txtReqCreationStartDatetxtReqCreationEndDate)를 추가했습니다.

사이에 ... 시도하고 있지만 쿼리에서 내 콤보 상자가 작동하지 않습니다.

나는 SQL을 사용하지는 않았지만이 온라인을 발견하고 클릭하여 필터 적용 버튼의 코드에 입력했지만 모든 레코드를 얻습니다. 다른 사람들은 도우 려했지만 항상 모든 기록을 얻습니다.

다음은 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 

미리 도움을 청하십시오.

+0

* (서식을 좀 더 정리해야합니다. 'sub '의 모든 것이 "코드"로 표시되는 것은 아닙니다.) ### 그렇다면, 완전히 생성 한 후에'Debug.print'를'strFilter'라고 제안 할 것입니다. 완성 된 문자열이 포함됩니다. 또한 왜 정확히'Mid (strFilter, 6)'를 사용합니까? ## "모든 레코드를 가져 오는 중"이면 필터에 이상이있을 것입니다. 잘 지내라. 근본적으로 바른 길 위에 있어야한다. –

답변

0

필터가 사용하는 것과 동일한 변수 이름을 사용하지 않고 복사/붙여 넣기를 했으므로 효과가 있습니다.

변경

strSQL = "SELECT * FROM qryVacanciesWithNoRequisition WHERE " _ 
     & "DateValue([Effective Date]) Between #" & Format(Me.txtReqCreationStartDate, "yyyy-mm-dd") & "# And #" & Format(Me.txtReqCreationEndDate, "yyyy-mm-dd") & "#;" 

편집 - 날짜가 텍스트 필드

변경 그것입니다 효과적인 지금 알고 :

If (IsDate(Me.txtReqCreationStartDate) AND IsDate(Me.txtReqCreationEndDate)) then 
     strFilter = strFilter & " CDate([Effective Date]) Between #" & 
    CDate(Me.txtReqCreationStartDate) & "# And #" & _ 
    CDate(Me.txtReqCreationEndDate) & "#" 
End If 
+0

안녕하세요. 도움에 감사드립니다. 내가 그걸 확인해야한다는 것을 알고 있기 때문에 나는 Null과 같은 것을 좋아한다. 두 가지 모두 시도했지만 "값이 정의되지 않은 함수 '값을 두 번 식 받았습니다 .DateValue에서 단어 값을 좋아하지 않는 것 같습니다. –

+0

미안 해요 귀하의 SQL을 이미 확인했다고 가정합니다 - EffectiveDate 필드가 날짜 필드 그 DateValue 제거 할 수 있습니다 - 실제 함수 또는 않은 경우 확인하려면 심지어 않았다. – dbmitch

+0

[유효 날짜] 텍스트 데이터 형식입니다 .yyyy-mm-dd 같이 테이블의 데이터를 보여줍니다. –