Filtro en access

Quisiera crear un formulario independiente en el que en los campos introduzco criterios de búsqueda (p.ej. Entre fecha1 y fecha 2, del proveedor1 al proveedor4, etc, todos actuando simultáneamente, y SIEMPRE que pueda dejar campos en blanco.
Gracias

1 Respuesta

Respuesta
1
Es fácil lo que quieres hacer, simplemente crea tu formulario con los siguientes controles:
Control Nombre
------------------------
Cuadro de texto fechai
Cuadro de texto fechaf
Cuadro de texto proveedori
Cuadro de texto proveedorf
Las "i" y las "f" significan "inicial y final" respectivamente.
Luego, suponiendo que tu tabla que deseas filtrar se llama "Pedidos" y tiene los campos Fecha (tipo fecha) y Proveedor (tipo numérico), entonces programas un botón (llamado cmdFiltrar) el cual te mostrará los registros según el criterio seleccionado, con un código más o menos así:
Private Sub cmdFiltrar_Click()
Dim filtro As String
filtro = ""
If Me.fechai <> "" Then filtro = "fecha>=#" & Format(CDate(Me.fechai), "m/dd/yy") & "#"
If Me.fechai <> "" And Me.fechaf <> "" Then filtro = filtro & " AND "
If Me.fechaf <> "" Then filtro = filtro & "fecha<=#" & Format(CDate(Me.fechaf), "m/dd/yy") & "#"
If filtro <> "" Then filtro = filtro & " AND "
If Me.proveedori <> "" Then filtro = filtro & "proveedor>=" & Me.proveedori
If Me.proveedori <> "" And Me.proveedorf <> "" Then filtro = filtro & " AND "
If Me.proveedorf <> "" Then filtro = filtro & "proveedor<=" & Me.proveedorf
MsgBox filtro
DoCmd.OpenForm "Pedidos", , , filtro
End Sub
Al final de esta instrucción te puse un msgbox para que veas el filtro antes de que abra el formulario "Pedidos" que es el que te mostrará los registros filtrados.
Y este formulario soporta CAMPOS EN BLANCO, de hecho si quieres poner sólo los valores finales sin los iniciales también funciona.
Si te fue de utilidad, no olvides calificarme :-)
Se me olvidó decirte:
Si las fechas no te trabajan bien, entonces deberás cambiar el formato de la función "Format" al formato de fecha utilizado en tu región, por ejemplo:
mm-dd-yy
m-d-yyyy
m/dd/yy
d/mm/yy
Etc.
Lo que pasa es que las condiciones de SQL (para consultas) toman la fecha en formato americano (mm/dd/yy).
Era todo :-)
Hasta pronto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas