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

Respuesta
1

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

Hola Tomás,
estic practicant, el que pasa es que ara tinc uns quants dies de força feina i no podré estar molt a sobre. Si et sembla, et valoro i tanco el tema i ja et torno a molestar mes endavant, igual la setmana que ve.

Et sembla bé? Digues-me coses.

Gràcies i una salutació.

Perdona per no contestar abans. Com vulguis, per part meva cap problema.

Salutacions

Respuesta
1

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

Hasta donde se, en las consultas de referencia cruzada no se puede poner criterios en la forma que quieres.

Sorry.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas