Access - cambiar criterios de consulta

 
Vista:

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 09/01/2014 10:34:40
Hola a todos. Soy nuevo en el foro y también en Access, por lo que pido perdón si no sé explicarme con claridad.
Mi problema es el siguiente: Desearía poder establecer los criterios de una consulta en función del campo del formulario que rellene en cada momento. Es decir, si relleno el campo "códigopostal" por ejemplo desearía que se abriese una consulta en la que Access buscase por ese campo, pero si el campo que relleno es "códigolocalidad" querría ejecutar la misma consulta, pero utilizando como criterio de búsqueda dicho campo. Hasta ahora creaba dos consultas (o las que necesitase) distintas, una para cada campo que tuviese que utilizar; pero me pregunto si es posible "ahorrar" espacio en la base utilizando la misma consulta y cambiando los criterios de búsqueda como he explicado.
He intentado utilizar código del tipo Docmd.RunSql pero, lo cierto es que, no sé si es que no sirve para lo que pretendo o que, simplemente, no sé cómo hacerlo :)
Muchas gracias a todos por su atención. Si precisan más información, les ruego que me lo hagan saber y trataré de explicarme mejor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

cambiar criterios de consulta

Publicado por Norberto (753 intervenciones) el 10/01/2014 12:08:00
Hola.

A ver si te aclaras con la explicación. Si no es así, te mando un ejemplo.

1. En la consulta añade como campos los distintos controles del formulario por los que quieras filtrar. Se añadirán como Expr1, Expr2, etc.

2. Desmarca las correspondientes casillas "Mostrar" de todos ellos.

3. En la línea Criterios pones para cada uno de éstos la expresión [Nombre del campo] O Es Nulo

4. Guardas la consulta.

Un saludo,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 11/01/2014 10:03:05
Hola Nor. Ante todo gracias por tu pronta respuesta. He intentado lo que me comentabas pero no me da ningún resultado. Seguro que se debe a que, o no me he explicado bien -casi no me entiendo ni yo - o no he sido capaz de hacer correctamente lo que me indicabas...
Por si acaso, te explico un poco lo que pretendo:
Tengo varias tablas (aunque para este caso, supongo que basta con una de ellas, te comento un poco más extensamente para intentar explicar mejor el caso). Dos de ellas son:
tabla Cientes
con los datos de los clientes:
idcliente
nombre...
dirección
código_postal
código_localidad
nombre_localidad

tabla localidades
idlocalidad
código_localidad
código_postal
nombre_localidad
(éstas tablas NO están relacionadas entre sí, ya que la tabla localidades solo la utilizo como tabla de apoyo)

He creado,con los mismos campos que aparecen en las tablas correspondientes, un formulario basado en la tabla clientes (clientesf), una consulta basada en la tabla localidades (llamada localidades_consulta) -en la que, en el campo código_postal, pongo como criterio de búsqueda "[Formularios]![clientesf]![código_postal]" - y otro formulario (resultado) con los mismos campos que la consulta "localidades_consulta" y además con un cuadro de lista (llamado localidades y basado en la consulta) y dos cuadros de texto independientes llamados codlocalidad y nomlocalidad.

La idea es la siguiente: Utilizo el clientesf para introducir datos de nuevos clientes. En el control "código postal" de este formulario he puesto el siguiente código asociado al evento AfterUpdate:

Private sub código_postal AfterUpdate()

DoCmd.OpenQuery "localidades_consulta"
DoCmd.OpenForm "resultado"
DoCmd.Close acQuery, "localidades_consulta"

End Sub

en el formulario "resultado" he colocado el siguiente código asociado al evento load:

Private sub Form_load

Dim ListControl As Control
Set ListControl = Forms!resultado!localidades

With ListControl
If localidades.ListCount = 1 Then
Forms!clientesf!código_localidad.Value = Forms!resultado!código_localidad
Forms!clientes!nombre_localidad.Value = Forms!resultado!nombre_localidad
DoCmd.Close acQuery, "localidades_consulta"
DoCmd.Close acForm, "localidades_consulta"
ElseIf localidades.ListCount > 1 Then

End If
End With

End Sub

Con éste código compruebo si existe una sola localidad para ese código postal o si hay más de una. Si solo hay una localidad me carga los datos en el formulario "clientesf" y se cierra la consulta "localidades_consulta" y el formulario "resultado"; pero si hay más de una, me muestra el formulario "resultado" en el cual solo es visible el cuadro de lista "localidades" con las localidades cuyo código postal coincide.

Ahora, para poder elegir la localidad que corresponda en cada caso, he asociado al cuadro de lista "localidades" el siguiente código:

Private Sub localidades_Click()

codlocalidad.Value = localidades.Column(1)
nomlocalidad.Value = localidades.Column(3)

'Aquí he añadido al código las siguientes líneas:

Forms!clientesf!código_localidad.Value = Forms!resultado!codlocalidad
Forms!clientesf!nombre_localidad.Value = Forms!resultado!nomlocalidad
DoCmd.Close acForm, "resultado"

'de esta forma, el formulario "clientesf", toma los datos correspondientes según seleccione una u otra localidad

End Sub

Así es como lo tengo hecho y funciona. Ahora bien, en otros casos más complejos, debo ejecutar de nuevo la consulta, pero cambiando los criterios de búsqueda, y ese es mi problema, ya que tengo que crear una nueva consulta, darle otro nombre y poner los criterios que necesite en cada momento (en algunas ocasiones, me veo obligado a crear hasta seis o siete consultas distintas con los mismos campos). Mi pregunta es: ¿Podría crear una consulta con todos los campos necesarios sin poner ningún criterio de búsqueda y que tome dichos criterios según el formulario (o control de formulario) que llame a la consulta? Es decir, que busque indistintamente en un campo o en otro y, además, con los criterios que necesite en cada caso...

No sé si he conseguido explicarme o lo he embarullado todo más. Ni siquiera sé si es posible hacer lo que pretendo... en fin, si pudieras ayudarme, te lo agradecería mucho...

Un Saludo y, sobre todo, muchas gracias por tu atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cambiar criterios de consulta

Publicado por deneg_nhj (348 intervenciones) el 12/01/2014 05:26:53
A manera de comercial, en mi sitio web hay unos videos que te dicen como realizar filtros avanzados. Si logras entender como funciona no tendrás "ningún" problema para hacer la consulta que necesitas.

Puedes comenzar por ver el de los filtros sencillos

http://sgh.com.mx/blog/2013/04/03/filtros-con-codigo-sencillo/


Saludos!


deneg_nhj
www.sgh.com.mx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 12/01/2014 07:00:23
Buenos días deneg. Muchas gracias por tu interés. El problema es que no consigo ver el vídeo (me dice "no hay complementos disponibles para mostrar este contenido", no sé si será el formato del vídeo o es que necesito algún visor o programa para visualizarlo...)
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cambiar criterios de consulta

Publicado por deneg_nhj (348 intervenciones) el 12/01/2014 16:39:12
Utiliza por favor Internet Explorer.


deneg_nhj
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 13/01/2014 16:42:20
Gracias de nuevo deneg.

He probado con un filtro sencillo y me funciona bien, pero el problema es que, en ocasiones, necesito mostrar los resultados en un cuadro de lista para dar la opción de "al hacer click" elegir una u otra de las distintas respuestas que aparecen. Es por eso por lo que necesitaría, una vez creada una consulta, cambiar los criterios de búsqueda de forma "automática" según la acción que el usuario realice en un formulario, o incluso según desde qué formulario se realice dicha acción.

Haciendo una consulta para cada una de las distintas posibilidades no hay problema, lo hace bien; pero el caso es que hay consultas en las que he introducido muchos campos (en ocasiones de tablas relacionadas entre sí) y que deberían repetirse muchas veces si no encuentro la forma de cambiar los parámetros de las mismas...

Muchas gracias por tu tiempo. (El vídeo de filtros avanzados no he podido verlo- ni el link tampoco :))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

cambiar criterios de consulta

Publicado por Luis (34 intervenciones) el 13/01/2014 19:21:21
a ver jesus a ver si me explico yo traigo una consulta igual a la tuya y nadien me ha podido dar una soluciona ver si mi solucion te ayuda tengo un formulario y 3 campos, campo combinado 1 tengo la siguiente lista cliente y Codigo
si de esta lista escogo clientes entonces le pidos que se vea el campo 3 que tiene la lista de nombre de los clientes y escondo el campo 2, si escogo el campo Codigo oculto el campo 2 y visulizo el campo 3 que tiene la lista, mas o menos asi me estoy dando la idea si tienes otra o has visto avisame
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 23/01/2014 10:38:08
Hola Luis. Perdona por la tardanza en contestar, pero ando muy liado y casi no tengo tiempo de nada.
En principio no entiendo muy bien tu explicación, pero, por lo que veo, no es lo que ando buscando . No obstante, voy probando con distintos métodos, por lo que, si es que encuentro una solución, te comento para ver si te sirve también a tí ( a ver si entre todos conseguimos que funcione lo que estamos haciendo...)
Muchas gracias por tu interés y lo dicho, si encuentro algo te aviso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 25/01/2014 11:02:07
Hola de nuevo Luis. Parece que he conseguido solucionar el problema. Te comento un poco lo que yo he hecho para ver si te sirve a ti (ojo, lo mismo no vale para nada, pero a mí de momento me funciona )

A ver, lo que yo quería hacer era lo siguiente:
Creo una tabla clientes, otra pedidos... las que necesite y las relaciono dependiendo de las necesidades que tenga.
Después creo un formulario basado en las tablas para introducir datos (clientes). Ahora bien, me interesa que, al introducir el dni (por ejemplo) Access compruebe si los datos de ese cliente ya están en la tabla, y, de ser así me muestre otro formulario en el que aparezcan dichos datos, algo así como "En la base de datos aparecen registros con este dni cuyos datos son los siguientes: " y, en un cuadro de lista se mostraría el nombre y apellidos del/de los cliente/s (hay que tener en cuenta que puede haber dos personas con el mismo dni). Al hacer click sobre la entrada correspondiente del cuadro de lista, me carga los datos en el formulario de entrada de datos, con lo cual no se repiten los datos en la base. Ahora bien, esto es para introducir datos, pero ¿qué ocurre si quiero realizar una búsqueda? Para ello creo una consulta (consultadatos) con los campos que necesite (así, además puedo introducir con facilidad expresiones como suma, promedio... o, simplemente crear una expresión que agrupe en un campo el nombre y los apellidos del cliente, los cuales en la tabla estaban por separado). En la consulta no introduzco ningún criterio de búsqueda. Creo dos formularios basados en esta consulta uno será el que comentaba antes (llamado Yaexiste) para mostrar que ya hay algún registro con ese dni y otro será para mostrar en detalle los datos de ese cliente (datos_clientes) y otro formulario independiente (Búsqueda)
En el formulario clientes, tengo los campos de la tabla (idcliente, letra_nif, nif, nombre, apellido1, apellido2...) y también dos cuadros de texto (letradni y dni) independientes y, en el evento "al cargar" de dicho formulario, sitúo el foco en letradni (además, los campos letra_nif y nif no son visibles ni tampoco punto de tabulación para no poder escribir en ellos). En el evento "después de actualizar del control dni coloco el siguiente código:
DoCmd.Openform "Yaexiste"
En las propiedades del formulario "Yaexiste", en la pestaña datos, apartado filtro le coloco el siguiente código: letra=forms!clientes!letradni y dni=forms!clientes!dni.
Añado un cuadro de texto llamado codigoId.
Añado también un cuadro de lista (existe) basado también en consultadatos y, en la pestaña datos de dicho cuadro de lista pongo como origen de la fila Select [consultadatos].[idcliente], [consultadatos].[letra_nif], [consultadatos].[nif],... From consultadatos WHERE ((([consultadatos].letra = forms!clientes! letradni) and (([consultadatos].dni= forms!clientes!dni)) order by [Idcliente];
Al hacer esto así, SIEMPRE que se abra el formulario Ya existe, me aplicará estos filtros (OJO, SIEMPRE ES SIEMPRE) y me mostrará los datos que deseo (los imprescindibles para no sobrecargar de datos un formulario, ya que si lo abrimos con todos los datos que tenemos, lo más probable es que el usuario huya despavorido)
Ahora, en el evento "al hacer click" del cuadro de lista "existe" pongo lo siguiente:
codigoId.value = existe.column(0)
Así el cuadro de texto codigoId toma el valor IdCliente.
DoCmd.Openform "Datos_Clientes"
Este formulario se utilizará, como te he comentado, tanto para mostrar en detalle los datos de un cliente cuyo dni hemos introducido en el formulario clientes, como para mostrar los resultados de una consulta. Por tanto no podemos aplicar aquí el truco de poner un filtro fijo en las propiedades del formulario ya que, en ese caso, solo podríamos utilizarlo para una de las dos cosas. Nos interesa poder cambiar el filtro en función de cúal sea el formulario desde el que lo llamamos.
En el formulario Datos_clientes tendremos los campos de los datos personales (todos) y, además, un cuadro de lista (detalles) en el que mostrará, por ejemplo, los pedidos realizados por el cliente (para ello habríamos creado previamente una tabla pedidos, la habríamos relacionado con la tabla clientes y, lógicamente, habríamos arrastrado los campos pertinentes a la consulta consultadatos). Este cuadro nos permitirá, haciendo click en la entrada correspondiente, ver el detalle de los distintos pedidos que aparezcan.

Hasta aquí hemos conseguido la primera parte. La siguiente se la he enviado también a deneg, pero la copio aquí por si no la has visto y te puede servir.
En ese cuadro de lista (detalles), en datos, origen de la fila, pongo como criterio el siguiente: idCliente (campo que está en la tabla clientes, en la consulta consultadatos y en el form datos_clientes) = forms!datos_clientes!idcliente
después hago un requery y listo.
Para hacer el requery:
En el evento "al cargar" del formulario datos_clientes pongo
DoCmd. ShowAllRecords
y quito los filtros que pudiera haber de anteriores entradas.
Como al cargar el form el foco se coloca automáticamente en el control idCliente (que es el primero que aparece), en dicho control, en el evento "al recibir el enfoque" he puesto el siguiente código:
Private Sub idCliente_gotfocus()
Me. idCliente.Requery
DoCmd.GoToControl "detalles"
y así envío el foco al cuadro de lista "detalles"
end sub.
por último, en el cuadro de lista pongo
Private sub detalles_gotfocus()
me.detalles.requery
actualizando así los datos que debe mostrarme ese cuadro de lista
end sub
Para poder ejecutar las distintas consultas desde cada formulario, simplemente utilizo el método DoCmd.Applyfilter (se puede poner, por ejemplo, en el evento "despues de actualizar), del siguiente modo:
DoCmd.ApplyFilter "consultadatos", "[consultadatos]![idcliente]=[Forms]![clientes]![idcliente]"
O bien, si quiero filtrar por más de un campo
DoCmd.ApplyFilter "consultadatos", "[consultadatos]![letradni]=[Forms]![buscar_cliente]![letra_dni] And [consultadatos]![dni]= [forms]![buscar_cliente]![dni]" (donde el form buscar_cliente es otro formulario creado exclusivamente para realizar búsquedas).
Listo, me funciona (al menos de momento) perfectamente.
En fin, no sé si esto te servirá de algo. Es más, no sé si he sabido explicarlo o si me he explicado como una piedra abierta , pero bueno, ahi te lo dejo a ver si te sirve de algo.
Muchas gracias por tu atención y ya me dirás si te sirve
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cambiar criterios de consulta

Publicado por deneg_nhj (348 intervenciones) el 14/01/2014 17:07:35
Estimado

Si entendiste como armar el filtro mediante VBA para el formulario, entonces asunto resuelto.

Funciona exactamente igual para las consultas, te explico.

La cadena que se arma y se aplica a "me.filter = xfFiltro" es en realidad una clausula WHERE, por lo tanto puedes armar tu consulta de la siguiente manera:

1
sSQL1 = "SELECT * INTO e_xTabla FROM xTabla WHERE " & xFiltro


Luego lo ejecutas
1
Currentdb.Execute  sSQL1


Aquí te dejo el código completo
1
2
3
4
On Error resume Next
DoCmd.DeleteObject acTable, "exTabla"
 
='editor_code'>sSQL1 = "SELECT * INTO e_xTabla FROM xTabla WHERE " & xFiltro
Luego lo ejecutas
1
Currentdb.Execute  sSQL1



Listo!!!!!!
Tendrás una tabla "Temporal" que cumple los criterios que el usuario ha solicitado.

Desde luego te pido que revises los filtros avanzados para tener el panorama completo.

Para el filtro avanzado "http://sgh.com.mx/blog/2013/04/15/filtros-avanzados-con-codigo-1-de-5/"


deneg_nhj
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 23/01/2014 11:12:27
Buenos días de nuevo deneg. Perdona por la tardanza en contestar pero estoy más liado que la sandalia de un romano y claro, no tengo tiempo de nada.
De nuevo, muchas gracias por tu interés y por tu tiempo. Te comento un poco:
En principio, y como ya te dije en una ocasión anterior, el filtro me funcionaba bien, pero me daba algún problemilla. Resulta que, además de pretender utilizar una sola consulta (con todos los campos que necesite), también querría utilizar un mismo formulario para mostrar los datos procedentes de distintas opciones del usuario. Es decir, si por ejemplo tengo una tabla clientes y otra tabla pedidos (ambas relacionadas uno a varios por un campo común) crearía un form de introducción de datos (form_clientes) y una consulta consultadatoscon todos los campos que necesito. En ese form, en el campo DNI (por ejemplo) y en el evento "después de actualizar del mismo, le introduzco código para que compruebe si existen los datos de dicho cliente y, de ser así, que me los muestre en otro form llamado form_datosclientes creado en base a la consulta consultadatos ( todo esto es un ejemplo para explicar un poco lo que pretendo, realmente es un poco más complejo, pero si consigo hacer esto, lo demás no me preocupa) . Para ello utilizo filtros tal como me explicaste. Ahora bien, imagina que, además, tengo otro formulario que es exclusivamente para hacer consultas de los datos de los clientes y de los pedidos realizados por estos. Este formulario podría llamarse form_Búsqueda, y permitiría filtrar por DNI, o por Nombre y Apellidos..., es decir, permitiría elegir por cúal de los campos se quiere realizar el filtro, y una vez filtrado, nos mostraría los datos en el mismo formulario form_datosclientes.
Pues bien, si en el form_clientes, campo DNI utilizo como código
Docmd.openform "form_datosclientes"
docmd.ApplyFilter "consultadatos", "[consultadatos]![dni]=[Forms]![clientesd]![dni]
me realiza bien el filtro, pero en el formulario form_datosclientes, al abrirlo en vista diseño, en la pestaña Datos, me ha copiado ese filtro, por lo que, cuando intento lo mismo desde el formulario form_Búsqueda, me pide el parametro de forms!clientes!dni y si no lo introduzco, me muestra todos los registros o ninguno.
He probado a añadir "Docmd.ShowAllRecords" para eliminar ese filtro pero, lo único que consigo es que, según donde lo coloque, me muestre otra vez todos los registros y no los que yo he filtrado, o que me muestre lo que me interesa ver (es decir, los resultados) pero, siempre, indefectiblemente, me pide los parámetros de forms!clientes!dni, si bien en el 2º caso, si no introduzco ningún parámetro, al darle a aceptar me muestra los resultados que busco.
He probado también con el código de me.filter = xfiltro que me comentaste y me ocurre lo mismo: Primero me pide el parámetro de forms!clientes!dni (cuando lo ejecuto desde el form_Búsqueda) y, sin meter ningún dato, al darle a aceptar, me realiza bien el filtro; pero, claro, no debería aparecer el msgbox pidiendo ese parámetro de búsqueda.
Por otro lado, no consigo ver el vídeo de filtros avanzados (he probado en varios equipos y nada) por lo que, si quiero realizar el filtro por varios campos, me da problemas ya que desconozco la sintaxis. Por último, la explicación que me dabas para armar la consulta, no he conseguido entenderla (y mira que lo explicas bien, pero yo en esto soy muy limitadito). Es decir, no se muy bien dónde colocar el código ni como llamarlo... En fin, vaya galimatías que he escrito aquí. Si puedes ayudarme te lo agradecería muchísimo (con lo de la consulta, tal vez con un ejemplo podría entenderla un poquíto mejor)
Muchas gracias, como siempre, por todo y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 25/01/2014 09:47:59
¡¡¡Solucionado!!! (creo)

El problema estaba en un cuadro de lista que también tengo en el formulario datos_clientes y en el que, en origen de la fila, tenía, como criterio dni = forms!clientes!dni, y claro, siempre me pedía ese parámetro. Me explico: El form datos_clientes está basado en la consulta consultadatos mostrando los campos que me interesan de dicha consulta; pero, además hay un cuadro de lista (llamado detalles) que muestra algunos campos que me interesa que se vean como si fuera una hoja de datos, dándome además la posibilidad de elegir uno u otro y que, al hacer click sobre alguno de ellos, me muestre otro formulario con los detalles ampliados (esto podría hacerlo en un solo formulario mostrando todos los datos, pero entonces tenía una pantalla muy sobrecargada, con demasiados datos, por eso buscaba la forma de "aligerar" dicha pantalla). Pues bien, era en ese cuadro de lista donde tenía establecido ese criterio. Lo he arreglado poniendo como criterio el siguiente: idCliente (campo que está en la tabla clientes, en la consulta consultadatos y en el form datos_clientes) = forms!datos_clientes!idcliente
después hago un requery y listo.
en el evento "al cargar" del formulario datos_clientes pongo
DoCmd. ShowAllRecords
y quito los filtros que pudiera haber de anteriores entradas.
Como al cargar el form el foco se coloca automáticamente en el control idCliente (que es el primero que aparece), en dicho control, en el evento "al recibir el enfoque" he puesto el siguiente código:
Private Sub idCliente_gotfocus()
Me. idCliente.Requery
DoCmd.GoToControl "detalles"
y así envío el foco al cuadro de lista "detalles"
end sub.
por último, en el cuadro de lista pongo
Private sub detalles_gotfocus()
me.detalles.requery
actualizando así los datos que debe mostrarme ese cuadro de lista
end sub
Para poder ejecutar las distintas consultas desde cada formulario, simplemente utilizo el método DoCmd.Applyfilter,
del siguiente modo:
DoCmd.ApplyFilter "consultadatos", "[consultadatos]![idcliente]=[Forms]![clientes]![idcliente]"
O bien, si quiero filtrar por más de un campo
DoCmd.ApplyFilter "consultadatos", "[consultadatos]![letradni]=[Forms]![buscar_cliente]![letra_dni] And [consultadatos]![dni]= [forms]![buscar_cliente]![dni]" (donde el form buscar_cliente es otro formulario creado exclusivamente para realizar búsquedas).
Listo, me funciona (al menos de momento) perfectamente. No he utilizado el método filter que me explicabas ya que no sé qué sintaxis utilizar para filtrar por más de un campo; pero, al menos de momento, parece que me funciona todo correctamente utilizando ApplyFilter, así que mejor no le doy más vueltas, no vaya a ser que la líe otra vez
Muchísimas gracias por tu paciencia y tu atención. Es probable que, en breve, vuelva a molestarte (a ti y a todos los que intervenís en este foro) con más consultas, ya que, desde luego, es una satisfacción ver que hay personas dispuestas a echar una mano a quienes, como yo, nos embarcamos en el fascinante mundo de Access con más atrevimiento que conocimientos (qué atrevida es la ignorancia, ¿Verdad?)
Por cierto, no sé si Luis leerá esto, ni si le será de utilidad. Por si acaso, se lo enviaré también...
De nuevo Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cambiar criterios de consulta

Publicado por deneg_nhj (348 intervenciones) el 25/01/2014 22:27:36
Me alegra escuchar que vas solucionando tus problemas

-- Te comento que el error que mencionas " me pide el parametro de forms!clientes!dni y si no lo introduzco, me muestra todos los registros o ninguno.", Te comento que esto sucede por que access guarda el valor del ultimo filtro. Una manera de solucionarlo es colocando la siguiente instruccion en el evento al descargar

me.Filter = ""
Me.filtered = false

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar criterios de consulta

Publicado por jesus (12 intervenciones) el 29/01/2014 19:31:52
Gracias deneg una vez más. Fíjate que yo había probado con
me.filter = ""
me.filterON = false

y claro, no me funcionaba. No obstante, como te comentaba lo he podido solucionar (no sé si se entiende lo que expliqué, pero, de momento, me funciona bien. A pesar de todo, si me vuelve a ocurrir, probaré lo del me.filtered = false y ya te diré.

Por cierto, abusando de tu amabilidad, querría hacerte una pregunta: ¿Es posible enviar un correo electrónico desde un formulario de access? Te comento que he probado con el siguiente código colocado en un botón, en el evento "al hacer click"
DoCmd.OpenReport "Vistacorreoe", acViewReport, "", "", acNormal (previamente creaba un formulario para poder visualizar y capturar los datos del email y un informe llamado "vistacorreoe")
Ahora bien, parece que esto debe funcionar con outlock, pero, el caso es que, en mi trabajo, tenemos ibm lotus notes y yo, en mi casa, tengo gmail, por lo que no consigo probar la línea de código anterior.
Por eso pregunto si es posible enviar un correo electrónico simplemente pulsando en un botón teniendo en cuenta que el correo no es de outlock, y, si lo es, ¿cómo puedo hacerlo?

De nuevo, muchísimas gracias
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar