Inicio consulta - formulario
Estoy haciendo una bd en la que hay “Fecha” y “Nombre” entre otras cosas y he conseguido que al abrir la consulta o el informe sobre la consulta, me pida entre que fechas quiero los resultados, pero no consigo que me pida que nombre quiero que consulte.
Es decir, quiero que cuando abra la consulta o informe me salga la ventanita para poder poner “Nombre” y después las ventanitas de “Desde” y “Hasta”, (que estas dos si que salen).
2 Respuestas
Tendrás que hacerlo mediante una caja de diálogo, que es un formulario con ciertas características.
Crea un formulario que tenga esos datos que quieres: fechaInicial, fechaFinal y nombre, y dos botones, aceptar y cancelar. Supongamos que le llamas DialogoOpciones.
El form que creas (DialogoOpciones) no tiene que tener vinculación a datos, todo lo que tienes ahí son variables, nada más.
Cuando desde tu formulario principal quieres abrir el informe que contiene los datos que quieres tener filtrados, tienes que hacer que te abra precisamente DialogoOpciones.
Si vas a poner un campo de texto, te recomiendo que uses un desplegable o un listbox, así evitarás problemas con acentos y demás.
Cuando el usuario clique en aceptar es cuando se tiene que abrir el informe, tomando como condiciones los campos del formulario y colocándolos en el parámetro CondicionDonde del comando de apertura del informe, como:
"((campo_fecha_informe between #" & format(fechaInicial, "mm/dd/yyyy") & "# AND #" & format(fechaFinal, "mm/dd/yyyy") & "#) AND (campo_texto_informe = '" & nombre & "'))"
Ten en cuenta que uso # para los campos de fecha y ' para los campos de texto
Prueba a ver que tal.
En la consulta de selección he conseguido lo que quería poniendo:
Campo: Centro ID Data
Tabla: Ta Centros de Trabajo Ta Actuaciones Ta Actuaciones
Total: Agrupar por Cuenta Dónde
Orden:
Mostrar: SI SI No
Criterios: [Que Centro] Entre [Inicio] Y [Fin]
o:
Así cuando abro el formulario, me pide la fecha de inicio que busco, la del final y el centro elegido. Pero los problemas llegan cuando se trata de una consulta de referencias cruzadas, hago esto
Campo: Centro Formato ([Data];”yyyy”) Tiempo
Tabla: Ta Centros de Trabajo Ta Actuaciones
Total: Agrupar por Agrupar por Suma
Tab ref cruz: Encabezado de fila Encabezado de columna Valor
Orden:
Criterios: [Que Centro]
o:
y me contesta: El motor de base de datos de Microsoft Jet no reconoce ‘[Que Centro]’ como un nombre o expresión válidos.
Dónde tengo el error. Gracias
¿Me podrías enviar la expresión de filtro que usas?
Este tipo de consultas agrupadas tienen una sintaxis ligeramente diferente para pasar parámetros
Perdona mi torpeza, pero ahora mismo no sé a que te refieres. Si es la sintaxis del criterio de la consulta, es:[Que Centro]
Si no es eso, por favor dímelo con lenguaje para novatos.
Muchas gracias
Perdón. Quise correr demasiado.
En el diseño de la consulta hay un botón arriba a la izquierda que te permite ver la consulta en modo SQL.
Si lo clicas aparece una expresión de texto que empieza por SELECT ...
Enviame toda esa expresión.
Buenos días, primero perdón por el retraso en la contestación, he estado de relax unos días.
Te mando lo que me pediste a ver si puedes encontrarme una solución. Gracias y saludos.
TRANSFORM Sum([Ta Despeses].Despesa) AS SumaDeDespesa
SELECT [Ta Centres de treball].Centre
FROM [Ta Centres de treball] INNER JOIN [Ta Despeses] ON [Ta Centres de treball].Id = [Ta Despeses].Centre
GROUP BY [Ta Centres de treball].Centre
PIVOT Format([Data],"yyyy");
Yo también he estado unos días fuera y no avisé, lo siento.
Vamos a ver, la consulta SQL que me pasas no tiene parámetros. Mira en el diseño de la consulta, en la mitad inferior de la pantalla, donde están los campos en forma de columna, a la izquierda, hay una serie de textos: campo, orden, visualizar, filtro y criterios, si mal no recuerdo (no tengo access a mano, así que voy de memoria).
Es en la sección de criterios donde tienes que poner el valor del filtro que quieres aplicar. Ten en cuenta que el campo Que centro que me decías antes no está en la consulta que me envías, y debería estar para poder filtrar por él.
Si no sabes que hacer con el campo en el resultado de la consulta siempre puedes desactivar su visualización.
Prueba a ver que tal, y me cuentas, ¿ok?.
Siau
Hola,
No le había puesto [Que Centro] en criterio cunando te mandé la consulta en modo SQL, perdón. Ahora lo he puesto y te mando una copia del SQL.
TRANSFORM Sum([Ta Actuacions].Temps) AS SumaDeTemps
SELECT [Ta Centres de treball].Centre
FROM [Ta Centres de treball] INNER JOIN [Ta Actuacions] ON [Ta Centres de treball].Id = [Ta Actuacions].Centre
WHERE ((([Ta Centres de treball].Centre)=[Que Centro]))
GROUP BY [Ta Centres de treball].Centre
PIVOT Format([Data],"yyyy");
Gracies
Por lo que me parece entender haces una consulta de referencia cruzada a partir de una subconsulta.
Te parecerá una tontería, pero yo prefiero hacer consultas de consultas, es decir, hacer el select en una consulta, y la tabla de ref. Cruzada a partir de esa consulta.
Más que nada, y en este caso porque tienes una consulta agrupada, y eso complica un poco el tema.
Además, tiene la ventaja de que así puedes cambiarlas de forma más fácil.
Prueba así y me cuentas.
Salut
I si vols continuar en català, per mi cap problema.
Es que estic molt verd en access i això d'una consulta d'una altra consulta ... m'entens? De totes maneres vaig a probar i et dic. Gràcies per l'ajuda.
PD. No deus viure a Mallorca?
Salutacions
No, no vic pas a Mallorca, visc a Castelló.
Es fácil, crea una consulta a partir del select interior:
SELECT [Ta Centres de treball].Centre FROM [Ta Centres de treball] INNER JOIN [Ta Actuacions] ON [Ta Centres de treball].Id = [Ta Actuacions].Centre WHERE ((([Ta Centres de treball].Centre)=[Que Centro]))
I li poses un nom.
Després crees una altra consulta de referencia creuada i prens com a origen de dades la que acabes de crear abans.
¿Saps qué pasa? Que a les consultes agrupades, les que porten la clausula GROUP BY, per a fer filtres per camps no es fa servir la clausula WHERE sino la clausula HAVING, i sospito que es per això que et dona problemas.
Ja em dirás quelcom.
Salutacions
- Compartir respuesta
Mi sugerencia es que hagas referencia a un formulario, donde tendrás los campos por donde quieres filtrar la consulta.
El campo nombres debe ir con el indice o clave principal escondido y luego el nombre. Tienes que hacer un combo box o lista para que salgan los nombres.
Luego en los campos que te interesan de la consulta haces referencia al formulario
Formularios! MiFormulario! MiCampo
Para las fechas harás >= Formularios!MiFormulario!FechaIncio
and <=Formularios!MiFormulario!FechaFinal
En la consulta de selección he conseguido lo que quería poniendo:
Campo: Centro ID Data
Tabla: Ta Centros de Trabajo Ta Actuaciones Ta Actuaciones
Total: Agrupar por Cuenta Dónde
Orden:
Mostrar: SI SI No
Criterios: [Que Centro] Entre [Inicio] Y [Fin]
o:
Así cuando abro el formulario, me pide la fecha de inicio que busco, la del final y el centro elegido. Pero los problemas llegan cuando se trata de una consulta de referencias cruzadas, hago esto
Campo: Centro Formato ([Data];”yyyy”) Tiempo
Tabla: Ta Centros de Trabajo Ta Actuaciones
Total: Agrupar por Agrupar por Suma
Tab ref cruz: Encabezado de fila Encabezado de columna Valor
Orden:
Criterios: [Que Centro]
o:
y me contesta: El motor de base de datos de Microsoft Jet no reconoce ‘[Que Centro]’ como un nombre o expresión válidos.
Dónde tengo el error. Gracias
- Compartir respuesta