Primero, no dices donde están esos ¿cuadros de texto? Donde vas a escribir, si en el formulario o en el subformulario.
Segundo, con el cuadro de texto donde vas a escribir o no la fecha, no puedes "filtrar" desde el principio, ya que un campo fecha sólo tiene valor cuando completas el día, mes y año.
Por ejemplo, supongamos que tengo la tabla Pedidos
Fíjate en los dos de fecha 08/07/2018
Si tengo el formulario Formulario1 con el subformulario Pedidos tal que
En el momento que escribo 0 o 08
Porque como te decía, el campo fecha( al ser en realidad un número) sólo tiene valor cuando lo "terminas", de forma que efectivamente cuando lo completas
Y si ahora escribiera algo en Destinatario
En el caso de que no escribas nada en Fecha y empieces directamente en Destinatario
El código del evento Al cambiar( aunque yo lo pondría en el evento Después de actualizar) es
Private Sub Fecha_Change()
Me.Pedidos.Form.RecordSource = "select fechapedido,destinatario from pedidos where fechapedido like '*" & Forms!formulario1!Fecha.Text & "*'"
Me.Pedidos.Form.Requery
End Sub
Y el código del evento Al cambiar del cuadro de texto Destinatario es
Private Sub Destinatario_Change()
If Not IsNull([Fecha]) Then
Me.Pedidos.Form.RecordSource = "select fechapedido,destinatario from pedidos where fechapedido =Forms!formulario1!Fecha and destinatario" _
& " like '*" & Me.Destinatario.Text & "*'"
ElseIf IsNull([Fecha]) Then
Me.Pedidos.Form.RecordSource = "select fechapedido,destinatario from pedidos where destinatario like forms!formulario1!destinatario.text & ""*"""
End If
Me.Pedidos.Form.Requery
End Sub