2016-07-11 8 views
0

Ich habe ein Formular mit mehreren Kombinationsfelder, die einen Bericht entsprechend den Werten in meinen Kombinationsfeldern öffnet. Das funktioniert, aber ich wurde gebeten, dem Feld Gültigkeitsdatum eine Option zu geben, damit ein Datumsbereich eingegeben werden kann.Zwischen zwei Daten in vba für ms Zugriff 2010

Ich habe zwei Textfelder (txtReqCreationStartDate und txtReqCreationEndDate) für Anfang und Ende hinzugefügt.

Ich habe versucht, die zwischen ... und in der Abfrage, aber dann meine Combo-Boxen funktionieren nicht.

Ich habe nie SQL verwendet, aber das online gefunden und es in den Code für den Apply Filter on click Button eingegeben, aber ich bekomme alle Datensätze. Andere haben versucht zu helfen, aber ich bekomme immer alle Unterlagen.

Hier ist der gesamte Code für das On Click-Ereignis.

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 

Vielen Dank im Voraus für die Hilfe.

+0

* (Sie müssen Ihre Formatierung ein wenig mehr aufräumen, bitte. Nicht alle "sub" erscheinen als "code". ### Davon abgesehen würde ich vorschlagen, dass du 'Debug.print' den' strFilter', nachdem du ihn komplett generiert hast, damit du * sehen * was kannst Die fertige Zeichenfolge enthält. ## Also, warum benutzt du 'Mid (strFilter, 6)'? ## Wenn Sie "alle Datensätze erhalten", muss mit Ihrem Filter etwas nicht in Ordnung sein. Mach weiter, du solltest * grundsätzlich auf dem richtigen Weg sein. –

Antwort

0

Es sollte für Sie arbeiten - Sie haben nur eine Kopie/einfügen, ohne den gleichen Variablennamen wie Ihr Filter verwendet.

ändern

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

EDIT - zu wissen nun, dass Datum des Inkrafttretens ist ein Textfeld

Ändern Sie es an:

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

Hallo, danke für die Hilfe. Ich mag den mit Null, weil ich wusste, dass ich nachsehen musste. Ich probierte beide aus, erhielt aber beide Male "Undefined function 'Value' im Ausdruck. Es scheint das Wort Value from DateValue nicht zu mögen. –

+0

Entschuldigung, ich nahm an, dass Sie bereits Ihr SQL überprüft haben - Wenn das Feld" EffectiveDate "ein Datumsfeld ist kann nur das DateValue entfernen - ich habe nicht einmal überprüft, ob das eine echte Funktion war oder nicht. Aktualisiert von Antwort – dbmitch

+0

[Datum des Inkrafttretens] ist ein Textdatentyp. Die Daten in der Tabelle werden als JJJJ-MM-TT angezeigt. –