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
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.