2016-07-11 69 views
0

我有一個窗體有多個組合框,根據我的組合框中的值打開一個報告。這有效,但我被要求給生效日期字段提供一個選項,因此可以輸入日期範圍。在vba中的兩個日期之間的訪問2010年

我爲開始和結尾添加了兩個文本框(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'都顯示爲「code」。)###這就是說,我建議你在完全生成它後''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的人,因爲我知道我必須檢查它。我嘗試了兩種方法,但在表達式中同時收到了「Undefined function'Value'。它似乎不喜歡DateValue中的Value。 –

+0

對不起,我假定您已經檢查過SQL - 如果EffectiveDate字段是日期字段可以刪除DateValue - 我甚至沒有檢查過它是否是真實函數。回答 – dbmitch

+0

[生效日期]是一個文本數據類型,表中的數據顯示爲yyyy-mm-dd。 –

相關問題