Access 2010 y cuenta de registros por fecha

De antemano doy las gracias a aquel que pueda ayudarme a solucionar este tema. Estoy armando una BD en Access 2010 que tiene varias tablas. De todas tengo que realizar diferentes consultas, pero hay dos consultas que no puedo resolver.
1) Por ejemplo tengo una tabla CONTRATOS con los siguientes campos:
Id contratos - nro rnos - nombre - analista - estado - fecha
Yo necesito CONTAR el total de ID entre dos fechas pero estableciendo como criterio el campo RNOS. Es decir, cuando abro la consulta me pregunta el "Nro RNOS" para filtrar los ID correspondientes a ese Nro RNOS y luego me debe preguntar entre que fechas quiero un número total de ID. Por lo tanto el resultado debe ser de una línea dónde aparezca el Nro RNOS y el número total de ID correspondientes a ese Nro RNOS entre las fechas seleccionadas.
Probé con consultas de cálculo y de selección, pero no logro dar con el resultado.
2) Este informe lo necesito con todas las tablas independientemente y luego, hacer un informe dónde me liste todos estos resultados en una sola página. Espero me haya podido explicar, sino seguiré buscando. Ojalá alguien pueda ayudarme.

1 respuesta

Respuesta
1

Para tu primera duda, debes construir una consulta de Totales, con los campos Nro RNOS, ID y Fecha.

Al campo Nro RNOS, en la fila de Total, le has de dejar "Agrupar por", y además de añadirle el criterio para que te pregunte por el número que quieres consultar.

Al campo ID, la fila de Total, se la has de cambiar a Cuenta

Al campo Fecha además de ponerle el criterio para que te pregunte las fechas entre las que filtrar, le has de desmarcar el check para que no te lo muestre en el resultado.

La segunda no entendí nada...

Muchas gracias por tu pronta respuesta Sveinbjorn El Rojo.

Voy a hacer lo que me decís y después te cuento.

Con respecto a la segunda pregunta, mi BD tiene varias tablas y de todas tengo que hacer el mismo proceso que comenté en el punto 1 y luego juntar todos los resultados en un solo informe. Es decir, necesito contar los registros de todas las tablas y posteriormente mostrar solamente el resultado con una etiqueta que identifique a que dato pertenece cada número en un solo informe. Espero haberme hecho entender.
Nuevamente muchas gracias

En ese caso, has de usar la función DBúsq (o DLookUp) para trasladar a tu informe los resultados de las distintas consultas.

La idea es esta:

Diseñas tu informe, sin hacerlo sobre una tabla o consulta, poniendo tantos cuadros de texto como necesites. En cada uno de los cuadros de texto, como "origen del control" le pones la función DBúsq(), algo así:
=DBúsq("CuentaID";"NombreConsulta")

Hola Sveinbjorn El Rojo, nuevamente muchas gracias.

Te cuento que hice lo que me decís en la primera respuesta, pero cuando ejecuto la consulta no me suma el total en un solo número, hace lo mismo que me pasaba a mi pero solo que ahora no me muestra la fecha. Te paso como lo armé a ver si logro darle una solución:
1) En el diseño de consulta selecciono la tabla y elijo los tres campos: RNOS, ID y Fecha.
2) En RNOS en criterios ingreso [INGRESE Nro RNOS]/
3) En Id en la fila de Total le pongo Cuenta
4) En Fecha ingreso Entre[INGRESE FECHA INICIAL] y [INGRESE FECHA FINAL]
La consulta se ejecuta perfectamente pero cuando me la muestra, me aparece el total de Id que hay por día.
Que estoy haciendo mal?

Muchas gracias.

En el Criterio de agrupación del campo fecha, ponle "Dónde" y acuérdate de desmarcar la casilla para que no te lo muestre. Ejemplo

Gracias por tu respuesta. Voy a ver si me sale. Podrías pasarme el ejemplo a mi mail? Porque no me deja bajarlo, ya que dice que expiró el archivo.

[email protected]

Sorry por mi pesadez pero te estoy muy agradecida.

A mi el enlace de descarga me funciona correctamente. Inténtalo de nuevo, porque ahora no te lo puedo enviar por otro medio...

De nuevo yo, evidentemente estoy pesada, ¿pero me podrías decir dónde debo escribir "Dónde"? ¿En la zona de criterios o como expresión?

¿Podrías escribirme la expresión o el criterio? Porque me dice que está mal escrito el criterio.

Muchas gracias nuevamente

El "Dónde" lo tienes que poner en la fila e Total, igual que el "Cuenta" o el "Agrupar por".

En la fila e criterio, has e poner los de Entre Fecha Inicial y fecha final

Si cambias la vista diseño a vista SQL e tu consulta, te tiene que quedar algo como esto, con los nombres que tu tengas:

SELECT Contratos.[nro rnos], Count(Contratos.IDContrato) AS CuentaDeIDContrato
FROM Contratos
WHERE (((Contratos.fecha) Between [INGRESE FECHA INICIAL] And [INGRESE FECHA FINAL]))
GROUP BY Contratos.[nro rnos]
HAVING (((Contratos.[nro rnos])=[INGRESE Nro RNOS]));

Te subo una imagen del diseño de la consulta, a ver si te ayuda:

GRANDE, ME SALIÓ, pero ahora no me sale el otro informe. Te cuento que hice un informe que no está asociado a ninguna tabla o consulta, tal como me los explicaste y en uno de los cuadros de textos de los tanto que puse, en Propiedades - Datos - Origen del control, escribí lo siguiente: 

=DBúsq("Nro_CUDAP";"cnsTOTALES_PROGRAMADAS_RNOS")

Dónde Nro_CUDAP es el campo que cuenta la consulta cnsTOTALES_PROGRAMADAS_RNOS.

Pero cuando ejecuto la consulta me dice en ese cuadro #Error.

Que hice mal?

Valoro ahora la respuesta o cuando lo resuelva? Porque para mi ya tengo un excelente, pero no quisiera abrir otra pregunta si no es conveniente para vos.

Mucha gracias

Valora cuando te parezca que la pregunta está contestada.

Como el informe que no te ale aún es de la pregunta original, podemos seguir tratando de resolverlo en esta misma pregunta, sin necesidad de abrir una nueva. Si fuera una duda diferente (nueva) sí recomendaría abrir una nueva pregunta y dejar esta finalizada.

Pasando al tema del segundo informe: sin ver lo que tienes hecho, es muy difícil saber si has hecho algo mal o está mal planteado el asunto. Una razón que se me ocurre para que no te funcione es que al estar las consultas parametrizadas (pides el dato de nro rnos), si están cerradas no te devuelva valor y por eso el #Error.

Esto lo puedes comprobar fácilmente: abres las consultas todas con el mismo parámetro, y si cerrarlas, abres el informe. Si así te funciona ya sabes por qué es. Ahora sólo falta encontrarle una solución...

Si prefieres que te lo mire yo, sube una copia de tu BD a dropbox, filebig... y ponme aqui el enlace de descarga, o si prefieres mándala por mail (comprimida) aquí: [email protected]

Genial, le doy un poco más de forma y te la subo a Dropbox, así se entiende mejor.

Entonces espero a terminar estas consultas para valorar.

Saludos y Muchas gracias.

Hola: No funciona ni con la consulta abierta. No sé que estoy haciendo mal.

Te paso la base a través de Dropbox, te va a llegar un correo con el acceso. Te cuento dónde tengo el inconveniente:

El informe se llama infTOTALES y cada dato depende de la consulta en cuyo nombre tiene la palabra TOTALES. Ej. cnsTOTALES_CONTRATOS_RNOS.

Cualquier cosa estoy a tu disposición.

Muchas gracias.

Este es el link de Dropbox.

https://www.dropbox.com/s/zbtjdlussoc6pyk/GESTION_GCP.accdb?dl=0 

Muchas gracias,

Marisa

Te dejo la BD con los dos primeros campos del informe programados (en el evento al cargar del informe): http://cort.as/U23D

La solución al problema es más complicada, porque al estar las consultas parametrizadas, los métodos "habituales" no sirven, y hay que usar recordsets y código VBA para recuperar los valores.

El código que te dejo está ampliamente comentado, y no creo que tengas problemas para completar el resto de los campos siguiendo el modelo.

He supuesto que todas las consultas que necesitas para ese informe tienen los mismos parámetros (NRO_RNOS, FECHA INICIAL Y FECHA FINAL). Si no fuera así, tendrás que añadir o quitar parámetros a las consultas que lo necesiten.

Habría otra forma de hacerlo, pero implicaría crear nuevas consultas de totales sin los parámetros, un formulario desde el que abrir el informe con cuadros de texto para filtrar el informe, y en los cuadros de texto usar la función DBúsq con criterios referidos a los valores de ese formulario.

No tengo más que agradecerte, pero decime de dónde bajo la base porque no la encuentro. En el link que me pasas me da el siguiente error: Error (404)We can't find the page you're looking for. Check out our Help Center and forumsfor help, or head back to home.

A ver ahora:

http://cort.as/U23D 

Hola, sos una maravilla porque tu código funciona perfectamente, pero cuando yo lo hago, tomando en cuenta todo lo que hay que cambiar (nombre de la consulta, nombre del campo del formulario y nombre del campo que cuenta) me salta un error y no encuentro el problema. De tipeo no es porque para evitar este tipo de errores copio y pego.

Con la salvedad que hay dos consultas que no llevan el Nº RNOS y por lo tanto lo quité, pero sigue con error. Estos que no llevan el RNOS, sólo cuentan totales del ID de la tabla son cnsTOTALES_CARTILLA y cnsTOTALES_PMA.

Te la vuelvo a subir a Dropbox, a ver si me ayudás, ya me da vergüenza seguir molestándote, pero me supera.

https://www.dropbox.com/s/fhlmwgnyof98bpq/GESTION_GC_EXPERTO.rar?dl=0

En la consulta cnsTOTALES_CARTILLA tienes mal escrito el parámetro (esto es lo que tienes: "R FECHA INICIAL]" Y [INGRESAR FECHA FINAL]), que tendrás que corregirlo.

En la consulta cnsTOTALES_PMA el parámetro no es el que pones en el código (qry.Parameters("INGRESAR FECHA INICIAL") y qry.Parameters("INGRESAR FECHA FINAL")) sino que es: Entre [INGRESE FECHA INICIAL] Y [INGRESE FECHA FINAL]

En resumen, en el código tienes que poner exáctamente lo mismo que tengas entre los corchetes en tu consulta para que te funcione.

¡Gracias! Sos un genio. El informe funciona de maravillas, no tengo palabras para agradecerte.

Hasta la próxima.....!!!!!

De nuevo yo, la consulta que armaste originalmente funciona perfectamente, pero me di cuenta que sólo puedo hacer la consulta si ingreso el Nro RNOS, en realidad yo necesito que cuente el total sin discriminar por Nro RNOS, sólo por fecha. Entonces me dije: Quito el código dónde lo está pidiendo y listo. Eso hice desde el inicio, quité la declaración de variables, el código dónde pide el número y posteriormente qry.Parameters ("INGRESAR Nº RNOS:") = miNRO en cada consulta.

Cuando la ejecuto, me da error en la primera consulta y me remarca en amarillo Set rst = qry.OpenRecordset (). Que lío me mandé????????

Juro que es la última pregunta.

Como te expliqué anteriormente, si la consulta tiene parámetros y tratas de abrirla por código, has de pasarle TODOS los parámetros, si no te dará error siempre.

La solución, si no necesitas filtrar nunca por Nro Rnos, es quitar el parámetro del código del informe y de las consultas.

Si no, has de crearte nuevas consultas que sólo te pidan las fechas y adaptar el código del informe a las nuevas consultas.

¡Gracias! 

Hola, todo está funcionando perfecto, pero me es imprescindible hacerte una nueva pregunta, pero que supongo no será conflictiva.

Recuerdas que necesitaba hacer el mismo informe en uno identificando el Nro RNOS y en el otro sólo por fecha. Funcionan ambos perfectamente, pero en el segundo se me repite la información 5 veces, es decir repite los datos cambiando el fondo de blanco a gris como si estuviera el informe dando datos diferentes en cada uno de ellos. Que hay que modificar? No encuentro la respuesta.

Muchas gracias y espero no sea complicado para ti.

Tendrás que mirar el diseño de la consulta base del segundo informe, a ver por qué te repite los valores. Normalmente porque no agrupa todo lo que debiera (si tienes campos que son distintos, te contarán como registros distintos, aunque agrupes)

Discúlpame, pero no entiendo. Todo está tal cuál como el que vos hiciste, sólo le quité la parte del código dónde me pedía el Nro RNOS y obviamente puse los mismos textos de la consulta que era lo que me daba error, tal como vos me lo explicaste. Cómo lo que hice fue copiar de tu informe a otro cambiando el nombre, los campos de los cuadros de texto tenían el mismo nombre, entonces lo que hice fue cambiarle el nombre a los campos y luego lo modifiqué en el código. El resto está tal cuál.

Cómo necesito que los títulos del informe por fecha cambien según sea un informe mensual, trimestral o anual y no puedo personalizar el título cuando lo ejecuto es que quiero hacer esto. Salvo que creas que hay otra solución y en ese caso abro una nueva pregunta.

Sigo pidiendo disculpas por lo pesada. Muchas gracias

No te acabo de entender, pero parece que el problema lo tienes en que tu informe que falla no es independiente. Quítale el origen del registro en la pestaña Datos de las propiedades del informe

¡Gracias! SOS UN GENIO........!!!!! Ese era el problema....!!!! 

No tengo palabras para agradecer tu ayuda.....!!!!!

HASTA PRONTO....!!!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas