Innanzitutto grazie per avermi dedicato un pò del tuo tempo. grazie veramente.
Ho fatto tutto..Ora però quando inserisco i campi nella casella data (che ho messo in formato data in cifra per farmi venire fuori il calendario) ed eseguo con il pulsante cerca mi si apre un popup il quale mi dice di immettere calori parametri con specificato order date
Che scatole
Aiutoo
Quote Originariamente inviata da nman Visualizza il messaggio
ci sono diversi problemini da mettere a posto ......

1°)
Sub Search()
perche non scrivi Private Sub Search() ??? come la hai scritta te è pubblica quindi impegna piu risorse

2°)
Dim strCriteria, task As String
scritta cosi strCriteria è un Variant mentre invece ti basta una String
lo devi scrivere cosi:
Dim strCriteria As String, task As String
oppure cosi:
Dim strCriteria As String
Dim task As String


3°)
a cosa ti serve il Me.Refresh ???

4°)
If IsNull(Me.ordinedatada) Or IsNull(Me.ordinedataa) Then
Tu verifichi che non sia nullo, ma se la data è incongrua per esempio 41/08/2018 ??
consiglio di usare If Not IsDate .......
poi puoi dirigere il focus direttamente al controllo incriminato evitando di andare genericamente al "Da"

5°) questo è il vero problema
a cosa ti serve task = "select * from tblAllTransaction where (" & strCriteria & ") order by [SCADENZA]"
se devi applicare il filtro ti basta solamente la parte "WHERE" quindi strCriteria

6°)
DoCmd.ApplyFilter task
non devi usare ApplyFilter,
poi il filtro lo devi applicare alla sottomaschera, perche i tuoi dati sono lì, giusto ??
Tu non hai fatto riferimento alla sottomaschera ......


alla fine io lo farei cosi:
codice:
Private Sub Comando34_Click()
    'Stop
    Call Search
End Sub


Private Sub Search()
Dim strCriteria As String
Dim dtmDa As Date
Dim dtmAa As Date


If Not IsDate(Me.ordinedatada.Value) Then
    Me.ordinedatada.SetFocus
    MsgBox "Please enter the date range 'Dal' ", vbInformation, "Date Range Required"
    Exit Sub    ' questo interrompe il codice
End If


If Not IsDate(Me.ordinedataa.Value) Then
    Me.ordinedataa.SetFocus
    MsgBox "Please enter the date range 'Al' ", vbInformation, "Date Range Required"
    Exit Sub
End If


dtmDa = Format(Me.ordinedatada.Value, "mm/dd/yyyy")  ' questo è fondamentale,  diversamente ti prende il 2/10 per 10/2  (2 Ottobre per 10 Febbraio)
dtmAa = Format(Me.ordinedataa.Value, "mm/dd/yyyy")


    strCriteria = "([SCADENZA] >= #" & dtmDa & "# And [order date] <= #" & dtmAa & "#)"
    Me!SMQuery1.Form.Filter = strCriteria  ' Attento,  SMQuery1 è il nome della sottomaschera dato all'interno della Maschera
    Me!SMQuery1.Form.FilterOn = True


End Sub

.