Consulta SQL

He hecho una consulta de selección de datos sobre una tabla con la condición:
WHERE nombre like [escribe un nombre]
Hasta aquí perfecto, al ejecutar la consulta me hace la pregunta y va bien, pero me interesa poder llamar a esta consulta desde un formulario, en el que hay una lista de nombres y que NO HAGA LA PREGUNTA, sino que le pase por código el nombre que esta seleccionado en ese momento.
Mi única duda es como llamar a esa consulta pasando el valor a consultar. He probado con:
Docmd.RunSQL
Docmd.OpenQuery
Y creo que no me sirven.
Lo ideal seria que hubiera una función del tipo:
Docmd.AbrirConsulta nombreconsulta, parametro1, parametro2,....
Donde en los parámetros se pondrían los valores (si los hay) que se preguntan al usuario cuando ejecuta la consulta, para que no los pregunte. Pero no la he encontrado.
Bueno, supongo que me he explicado.
Si me pudieras ayudar me harías un gran favor.
Muchas gracias por tu tiempo.

3 respuestas

Respuesta
1
Para hacer lo que quieres vamos a suponer que el formulario donde le darás los nombres se llama FrmNom y que tiene un cuadro de listas llamado TxtNombre.
Lo que tienes que hacer es decirle en la condición where esto:
where nombre like form!Frmnom.txtnombre y listo.
Te sugiero si estas escribiendo en código que uses el intellicense que te ayudara con la sintaxis.
Suerte, si tienes problemas me lo haces saber
Ya te entendí (creo), pero lo he probado y no me funciona. Me sigue pidiendo un valor. Te explico lo que hago y me dices que hago mal:
En el formulario hay un botón, que ejecuta el siguiente código:
Docmd.OpenQuery "Consulta1"
He creado la consulta1 y dentro del where he puesto:
WHERE nombre like form!Form_Formulario1.listanombres.Value
Porque el control de lista de llama listanombres
¿Dónde esta el error?
Gracias de nuevo.
Has una de estas 2 cosas en primer lugar suprime el .value y pruébalo de esta forma.
Si no te funciona has esto:
En la consulta en el modo de edición, parate debajo del campo por el cual desees realizar la consulta justo en la linea de criterios.
Luego llama el generador de expresiones que es un icono que tiene la forma de una varita mágica.
Luego escríbele toda la ruta haciendo doble click así:
Formulario, todos los formularios, formulario1, listanombre al finalizar de dar doble click en toda la ruta se te debe devolver nuevamente a la consulta de diseño pero con el texto escrito de lo que necesitas.
Para ver el resultado deberás ejecutarlo.
Suerte
Respuesta
1
Veo que necesitas ejecutar la consulta por código en tal caso tienes el problema que comentas con los parámetros. Bien, podrías hacerlo de la siguiente forma :
Dim Consulta as Querydef (Definimos una variable de tipo consulta definida)
Set Consulta = Currentdb.QueryDefs("Nombre de la Consulta") (Le asignamos a la variable una consulta ya creada)
Consulta.Parameters(0) = "Valor del parámetro" (El parametro solicitado se completa aqui. El valor 0 hace referencia al 1º parámetro, el 1 al 2º parámetro y así sucesivamente)
Consulta. Execute(0) (Ejecuta la consulta)
Consulta. Close (Elimina la variable de memoria)
********************
Si la deseas ejecutar directamente sin necesidad de código. Puedes hacer lo siguiente. : En le WHERE, en vez de poner "nombre like [escribe un nombre]" coloca "nombre like Forms![nombre del formulario que tienes abierto]![nombre del cuadro de texto o combo o... que deseas utilizar para el filtro].
Respuesta
1
Puedes agregar una condición de búsqueda (criterio) en tu consulta de forma que busque por el campo mostrado en un formulario así:
Forms![TuFormulario]![NombreDelControl]
Por ejemplo, si deseas que tu consulta te muestre todas las personas con edad mayor a la mostrada en un formulario, entonces debes poner algo así (en tu consulta):
>Forms![Personas]![EdadPersona]
De esta forma, al abrir o usar tu consulta en cualquier lugar te mostrará sólo las personas que cumplan con el criterio indicado en el formulario "Personas", PERO este formulario debe estar abierto, de lo contrario la consulta no funciona.
Para el tipo de consulta que necesitas, deberías de poner algo así:
like [Forms]![TuFormulario]![nombre] & "*"
Deberás sustituir "TuFormulario" por el nombre real de tu formulario. Te darás cuenta que Access sustituye like por "Como".
Yo utilizo el asterisco (*) para que "like" busque todos los elementos que comiencen por el nombre indicado. Si deseas que tu consulta te muestre el nombre exacto, deberás de cambiar el like por un signo igual.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas