Filtrar al cambiar un subformulario con dos campos

Tengo un suformulario tiene los campos fecha y lote

Y necesito que me filtre cuando pongo en los campos selct_fecha y select_lote

Pero si hay uno nulo en la selección que me elija el que escriba.

Si están los dos me filtre los dos campos

Desde ya muchas gracias

Si es posible con el evento al cambiar, a medida que escriba me filtre mejor

Respuesta
3

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

¡Gracias!

Eres un genio para mi, que velocidad y forma de explicar todo tienes

Ahora entendió lo de las fecha por eso tenia tantos problemas en otras cosas también

Saludos, algún día andas por san luis argentina, te has ganado un super asado.

Es excelente, y si agregara un campo más Compr

Como seria la línea si fuera triple filtrado. Siempre alguno de los 3 puede estar en nulo.

Ahí la complique un poco más. Pero lo que me interesa es ver como se arma la línea de select principalmente.

Se iría complicando, pues tendrías que poner en el tercero, las posible combinaciones de los dos primeros

If isnull([fecha]) and isnull([destinatario]) then

me.pedidos.....

elseif not isnull([fecha]) and isnull([destinatario]) then

.....

elseif isnull([fecha]) and not isnull([destinatario]) then

....

elseif not isnull([fecha]) and not isnull([destinatario])

......

End if

Personalmente usaría cuadros combinados en cascada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas