Parámetros a una query

Bueno este es mi primer post
El problema que tengo es el siguiente
Tengo una Query que se llama QRY_PALANCA_PRPAL la cual es como esta abajo
SELECT PR_Proyecto.Id, PR_Proyecto.cd_proyecto, PR_Proyecto.Palanca_Principal
FROM PR_Proyecto
WHERE (((PR_Proyecto.Id)=[Ingresa la id del proyecto]) Or ((PR_Proyecto.Palanca_Principal)=[Ingrese palanca]))
ORDER BY PR_Proyecto.Id;
Como ven esta query cuando se ejecuta te permite ingresar una palanca o id y así hacer un filtro. Esta funciona ok.
Pero quise hacer lo mismo para otra query que tengo un poco, va bastante más grande y no logro el mismo resultado.
La otra query vamos a llamarla XXX y es como figura abajo
SELECT PR_Proyecto.[Es cartera Actual?], AR_Area.Id_Area_Padre, PR_Proyecto.Id_Area_Pertenece, [tmp - madurez planificacion].cd_proyecto, [tmp - madurez planificacion].Nombre, [tmp - madurez planificacion].[Líder/es], [tmp - madurez planificacion].Estado, [tmp - madurez planificacion].[Madurez Planificación], [tmp - madurez planificacion].Desvio_Planif, [tmp - madurez planificacion].Avance, [1007_REPORTE_PRESUP].[SumaDe2008- Presupuesto Actualizado], [1007_REPORTE_PRESUP].[SumaDe2008-Gasto], PR_Proyecto.Palanca_Principal, PR_Proyecto.[Objetivo Principal], TABLA_PALANCAS.Palanca, TABLA_PALANCAS.Objetivo, Tabla_Vital_Few.Vital_Few, PR_Proyecto.[Vigencia Desde], PR_Proyecto.[Vigencia Hasta]
FROM ((AR_Area INNER JOIN ((PR_Proyecto LEFT JOIN [tmp - madurez planificacion] ON PR_Proyecto.cd_proyecto = [tmp - madurez planificacion].cd_proyecto) LEFT JOIN 1007_REPORTE_PRESUP ON [tmp - madurez planificacion].cd_proyecto = [1007_REPORTE_PRESUP].Código) ON AR_Area.Id = PR_Proyecto.Id_Area_Pertenece) LEFT JOIN Tabla_Vital_Few ON PR_Proyecto.Id = Tabla_Vital_Few.Id_Proyecto) LEFT JOIN TABLA_PALANCAS ON PR_Proyecto.Id = TABLA_PALANCAS.Id_Proyecto
GROUP BY PR_Proyecto.[Es cartera Actual?], AR_Area.Id_Area_Padre, PR_Proyecto.Id_Area_Pertenece, [tmp - madurez planificacion].cd_proyecto, [tmp - madurez planificacion].Nombre, [tmp - madurez planificacion].[Líder/es], [tmp - madurez planificacion].Estado, [tmp - madurez planificacion].[Madurez Planificación], [tmp - madurez planificacion].Desvio_Planif, [tmp - madurez planificacion].Avance, [1007_REPORTE_PRESUP].[SumaDe2008- Presupuesto Actualizado], [1007_REPORTE_PRESUP].[SumaDe2008-Gasto], PR_Proyecto.Palanca_Principal, PR_Proyecto.[Objetivo Principal], TABLA_PALANCAS.Palanca, TABLA_PALANCAS.Objetivo, Tabla_Vital_Few.Vital_Few, PR_Proyecto.[Vigencia Desde], PR_Proyecto.[Vigencia Hasta];
Como ven es muy distinta a la primera:
La primera lo único que agregue para que funcionara fue en el access en la vista diseño donde dice criterios puse [ingrese bla bla] pero cuando hago eso en la query XXX no funciona.
Puse como criterio [ingerse palanca] y cuando la ejecuto me aparece un error que dice."El motor de base de datos MIcrosoft Jet no reconce [Ingrese palanca] como un nombre de campo o expresión válidos "
¿Qué puede ser? Tengo que realizar varios criterios y ni siquiera me funciona con uno...
Lo que quiero, tengo que hacer, es que cuando ejecute XXX, no se, pida ingrerse palancas y por ejemplo vigencias y que me devuelva la query con ese filtro por tirar un ejemplo

1 Respuesta

Respuesta
1
No te compliques tanto la vida. Crea una consulta que te tome el id o la palanca por parámetros tal y como la haces, la guardas con el nombre que quieras, por ejemplo QS_Palanca
Haces otra nueva consulta contra las tablas que te de la gana, y mete también la consulta anterior, igualas o relacionas las tablas y la consulta QS_Palanca por los campos Id (o el que te haga falta) y ya está.
La primera consulta te sirve para seleccionar por id palanca o palanca, y al relacionarlo en la segunda sólo tirará de los valores donde IdPalanca sean iguales en las tablas.
El SQL te ha de quedar algo así
SELECT .....
FROM TablaDatos INNER JOIN QS_Palanca ON TablaDatos.IdPalanca = QS_Palanca.IdPalanca
ORDER ....
Esto te sacará los valores de la tabla de datos igualado por IdPalanca. Hazlo tantas veces como lo necesites descomponiendo en consultas más sencillas.
Viendo lo que te dice Access me da toda la impresión a que se debe a el texto "ingrese palanca" está en algún otro lado como campo o algo parecido y no puede seguir. Creo que es esto por la variablidad de nombres de campo que tienes con -, con espacio - espacio, con /, estos caracteres suelen dar la lata bastante. Prueba con un texto que sea imposible que exista en algún otro lado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas