Intentaré contestarte de la manera en que yo lo hice.
Partimos de una tabla llamada "Libreria" que tiene los campos 'Campo1', 'Campo2', 'Campo3' (en cualquiera de ellos puedes elegir entre sus propiedades, en la pestaña Búsqueda, que sea un cuadro combinado y le defines el Tipo de origen de la fila). Creas una consulta (la llamamos C_Multiconsulta) con origen de datos en la tabla anterior. Al trasladar los campos de la tabla a esta multiconsulta en vez de quedar (en la fila "Campo") el nombre de los campos de la tabla, hay que utilizar la función Nz para que te devuelva cero los campos vacíos, de forma que tienes que modificarlo para que queden así:
Campo1: Nz ([Libreria]![Campo1];"") y así con los otros 3 campos
En esa misma consulta, en "Criterios" pon esta cadena:
En el correspondiente al 'Campo1': Como "*" & ([Formularios]![F_Multiconsulta]![C1]) & "*"
En el correspondiente al 'Campo2': Como "*" & ([Formularios]![F_Multiconsulta]![C2]) & "*"; y lo mimso para el 'Campo3' : Como "*" & ([Formularios]![F_Multiconsulta]![C3]) & "*".
Si algunos de los campos (p.e. 'FechaEdicion') es tipo Fecha tendrías que ponerlo así:
FechaEdicion: Nz([Libreria]![FechaEdicion];#01/01/1000#) y en Criterios para buscar por un rango de fechas tendría que quedar así: >=Nz([Formularios]![F_Multiconsulta]![Desdefecha].[Value];#01/01/1000#) Y <=Nz([Formularios]![F_Multiconsulta]![Hastafecha].[Value];#01/01/3000#) donde 'DesdeFecha' y 'Hastafecha' son los nuevos nombres que has de dar a dos cuadros de texto que has de colocar en el formulario F_Multiconsulta
Observa dos cosas: en la función Like (Como) utilizo comodines por delante y por detrás; así puedes buscar cualquier registro que contenga la cadena que quieres buscar. Si quieres que sólo te busque exactamente lo que escribes déjalo así : Como ([Formularios]![F_Multiconsulta]![C1]).
La otra cuestión es que tienes que dar un nombre distinto a los campos en la fila de criterios (en este caso C1, C2 y C3); este será el nombre de los campos que aparecen en el formulario al que llamaremos F_Multiconsulta que ahora te explico:
Crea un formulario al que le puedes llamar "F_Resultado", con origen de datos en la Consulta que has creado (C_Multiconsulta) y trasladas al mismo los campos de esa consulta.
Creamos otro formulario "F_Multiconsulta" con origen de datos en la tabla "Libreria". Después de haber completado el diseño vas a sus propiedades y eliminas el Origen del registro dejándolo en blanco (también podrías inicialmente crear el formulario sin origen de datos e ir incluyendo los diversos cuadros de texto, uno para cada uno de los campos de la tabla, pero de esta forma resulta más sencillo a mi parecer; además si utilizar cuadros combinados te sigue manteniendo el tipo de origen que has definido en la tabla). Después en cada uno de los campos de ese formulario, en sus propiedades, también eliminas el Origen del control dejándolo en blanco y cambias sus nombres ('Campo1' por C1 y así con los tres). Crea un botón de comando al que podemos llamar Ejecutarconsulta y en el evento "al hacer clic", al picar en los tres puntos selecciona Generador de Código de forma que al final te quede esto:
Private Sub EjecutarConsulta_Click()
On Error GoTo Err_EjecutarConsulta_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "F_Resultado"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_EjecutarConsulta_Click:
Exit Sub
Err_EjecutarConsulta_Click:
MsgBox Err.Description
Resume Exit_EjecutarConsulta_Click
End Sub
De esta forma estamos llamando al formulario F_Resultado, el cual tiene su origen en la consulta C_Multiconsulta, la cual toma como parámetros de búsqueda lo que le hemos puesto en cualquiera de los campos de F_Multiconsulta .
Bueno, parece algo laborioso por lo extenso de la explicación pero la verdad es que no lo es tanto;
no se si ya se solucione el probolema pero yo sigeriria usar un like antes del siinm() algo asi comolike siinm(isnull(la ruta);"*",la ruta).. saludos - Amisadai Hernandez