Access - Ayuda con consultas con parámetros

 
Vista:

Ayuda con consultas con parámetros

Publicado por Seba (1 intervención) el 25/06/2007 00:30:00
He construído la siguiente consulta con parámetros:

PARAMETERS Autor Text ( 255 ), [Año public] Short;
SELECT [04_Mecanica de placas].Autores, [04_Mecanica de placas].Título, [04_Mecanica de placas].[Revista/Libro], [04_Mecanica de placas].Año
FROM [04_Mecanica de placas]
WHERE ((([04_Mecanica de placas].Autores) Like "*[Autor]*")) AND ((([04_Mecanica de placas].Año)=[Año public]));

Funciona bien; pero el hecho de poner 'Like "*[Autor]*" en la condición hace que lo que se introduce en el parámetro Autor no sea una condición excluyente; es decir, aparecen también como resultados de la consulta aquellos registro donde el parámetro "Año public" también coincide. ¿Cómo hago para que "Autor" sea excluyente sin necesidad de cambiar "Like" por " = "
Gracias.
Saludos.
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 Alejandro

Consulta con parámetros para búsqueda excluyente de autores

Publicado por Alejandro (4142 intervenciones) el 14/08/2023 18:12:20
Para lograr que el parámetro "Autor" sea excluyente y no afecte al parámetro "Año public", puedes usar una combinación de los operadores `Like` y `=` en la condición de la consulta. Aquí está la consulta ajustada:

1
2
3
4
PARAMETERS Autor Text (255), [Año public] Short;
SELECT [04_Mecanica de placas].Autores, [04_Mecanica de placas].Título, [04_Mecanica de placas].[Revista/Libro], [04_Mecanica de placas].Año
FROM [04_Mecanica de placas]
WHERE ((([04_Mecanica de placas].Autores) Like "*" & [Autor] & "*") AND (([04_Mecanica de placas].Autores) Not Like "*" & [Autor] & "*" Or ([04_Mecanica de placas].Año) = [Año public]);

La parte clave aquí es la siguiente sección de la consulta:

1
((([04_Mecanica de placas].Autores) Like "*" & [Autor] & "*") AND (([04_Mecanica de placas].Autores) Not Like "*" & [Autor] & "*" Or ([04_Mecanica de placas].Año) = [Año public])

Esta parte de la condición se asegura de que los registros cumplan ambas condiciones: que el "Autor" proporcionado coincida con el campo "Autores" (usando el operador `Like`), pero al mismo tiempo, no debe coincidir con el mismo campo "Autores" (usando `Not Like`) para garantizar la exclusión.

Si ambos lados de la condición `AND` son verdaderos, el registro se seleccionará. Sin embargo, si el registro cumple la primera parte (`Like`) pero no la segunda parte (`Not Like`), el operador `OR` permitirá que el registro se seleccione si también coincide con el "Año public".

Esta estructura de la condición logra el resultado deseado de hacer que "Autor" sea excluyente sin afectar a "Año public".
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