Access - Número variable de registros por página

   
Vista:

Número variable de registros por página

Publicado por D (40 intervenciones) el 05/03/2016 13:56:47
Hola a todos
Tengo una base de datos de clientes.
Querría hacer un informe en donde me saliera un listado de clientes actuales junto a una rejilla que serían los días de la semana:
Más o menos, sería así:

CLIENTE___|__LUNES___|__ MARTES___|___MIÉRCOLES___| ......etc
Manolo_____|___________|_____________|________________|
Luisa______|___________|_____________|________________|
Andrés_____|___________|_____________|________________|

(queda un poco chapucero, pero ya sabréis disculpar )

El listado y las líneas horizontales y verticales ya los sé hacer.
¿Cuál es el problema?
Me gustaría que en cada página saliera un número determinado de registros en función del total, es decir, distribuir uniformemente el número de registros por página.
Generalmente, el número de páginas será siempre de 2.
Por lo tanto, si en total hay 100 clientes actuales, en cada página habrían de salir 50; Si hubiera 88, serían 44, y así sucesivamente, según la fórmula: nº por página = nº Total / 2
¿Hay alguna manera de expresar esto? ¿Cómo se solucionaría en caso de haber un número impar?
Para acabar de hacerlo bien, las líneas verticales habrían de crecer o menguar de acuerdo con el espacio vertical ocupado, para que quedara una rejilla perfecta (y no como me ha salido en la muestra )

Muchas gracias a todos por vuestro interés y ayuda.
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 05/03/2016 20:11:23
Dejando a un lado inventos raros, solo hay que aplicar un poco de matemáticas.

Tenemos que la sección detalle utilizara como espacio útil el que le sobre a las secciones de cabecera pie de PAGINA y demás elementos (agrupaciones) asi como a la cabecera y pie del informe.

Se parte del supuesto de que se conoce la altura del detalle (y que este no se expande automáticamente) y que el detalle se repetirá tantas veces como quepa en el 'hueco libre' antes mencionado.

La altura de una pagina es un valor fijo, la de las diferentes secciones se puede conocer y sumar (ya tenemos el 'espacio útil') el resto dividido por la altura de la sección detalle nos da el numero de elementos máximo a contener.

¿Qué tenemos un determinado numero de registros y en dos paginas? .... dividido por dos y multiplicado por la altura del detalle sabemos el espacio que se necesita (y que SIEMPRE deberá ser inferior al espacio útil calculado), lo que se le quiera menguar , se le añade a otra sección (cabecera/pie de pagina) y 'el espacio útil' para la sección detalle se vera restringido a ese numero de registros.

Parece complicado, pero asumiendo que los cálculos los hace la maquina ..... el resto es sencillo (en base a un informe de diseño constante y conocido).
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

Número variable de registros por página

Publicado por David (5 intervenciones) el 05/03/2016 20:19:53
Me parece que no me he expresado bien.
El número de registros puede variar, y de hecho varía, de una semana a otra (incluso de un día a otro)
Para un número de registros fijo, ya lo tengo construido.
Lo que quiero es que, automáticamente, vaya cambiando la altura del registro en función del número total.
De todas maneras, gracias por tu respuesta
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 05/03/2016 20:36:37
Si lo que deseas es cambiar la altura de la sección detalle (lo que tu llamas registro), es bien sencillo....

En base a que 'el resto' (pies y cabeceras) son fijas y conocidas, que la pagina tiene una altura fija, la simple suma y resta indicara el espacio útil disponible.

Se conoce el numero de registros a presentar (por pagina) , basta dividir el espacio antes calculado (se puede calcular una única vez y guardarlo como constante) entre el numero de registros a presentar (si el 'espacio normal' admitiría 40 y se le meten cien, la altura puede hacerlos ilegibles, pero hay estarán)

Las medidas internas de Access son en Twpis (pero eso asumo que lo conoces si te manejas con las líneas y curvas)
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

Número variable de registros por página

Publicado por d (40 intervenciones) el 05/03/2016 23:05:36
Sigo sin expresarme bien. Lo siento.
Adjunto una imagen parcial de Vista Diseño y otra imagen, también parcial, de vista Informe.
Tal como está configurado, ya sé que me van a salir 50 clientes en la primera página y otros 50 en la segunda. Y si el total son menos de 100, también me saldrán 50 en la primera, y los que queden, en la segunda.
Lo que quiero es que se ajuste el número de clientes por página teniendo en cuenta el total (que varía de un día a otro), y que el espacio en tre líneas horizontales sea mayor o menor según el número de clientes que haya en esa página. Las líneas verticales se adaptarán al nuevo tamaño para que quede un aspecto de rejilla.
Podría crear multitud de informes con alturas diferentes. Y si sé que hay 100 clientes, le digo: "Sácame el Informe 1" (que es de 50 clientes por página) Si sé que hay 80 clientes, le digo: "Sácame el Informe 2" (que es de 40 clientes por página) Si sé que hay 110, le digo "Sácame el informe 3" (que es de 55 clientes por página) Y así hasta.......el infinito. Pero esto, aparte de ser un palizón de trabajo, no queda demasiado "profesional"
Gracias de nuevo por tu interésentes. Y si sé que hay 100 clientes, le digo: "Sácame el Informe 1" (que es de 50 clientes por página) Si sé que hay 80 clientes, le digo: "Sácame el Informe 2" (que es de 40 clientes por página) Si sé que hay 110, le digo "Sácame el informe 3" (que es de 55 clientes por página) Y así hasta.......el infinito. Pero esto, aparte de ser un palizón de trabajo, no queda demasiado "profesional"
Gracias de nuevo por tu interés
Presentacion1-Copiar
VistaDiseno-Copiar
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/03/2016 02:09:30
Otra opción seria añadir un salto de pagina después de la sección detalle, volverlo invisible y en tiempo de ejecución) cuando se alcance el numero de registros deseado (la mitad del total) volverlo visible con lo que actuaria y se iría a la siguiente hoja (utilizaría solo parte del espacio disponible y quizás se adapte a tu necesidad).

Verifica si esta formula te pude ser útil (en base a un total de treinta y salto a la mitad, los treinta y su mitad serian la cuenta de registros y ese resultado dividido por dos)

En la ventana de inmediato:
for xx=1 to 30: debug.Print xx, xx mod 15 =0 : next xx
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

Número variable de registros por página

Publicado por David (40 intervenciones) el 06/03/2016 20:06:35
Lo que quiero es que no tenga que decir yo cuántos registros o clientes hay, sino que sea el propio programa el que lo sepa y determine cuánto es la mitad y los distribuya (haciendo las correcciones necesarias en caso de número impar)
(Ya habrás notado que mis conocimientos sobre las entrañas de Access es limitado)

De todas maneras, gracias de nuevo por tu interés.
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 07/03/2016 21:58:42
El numero de registros de un conjunto se suele obtener contándolos, según el origen puede existir una propiedad (normalmente 'COUNT') que lo indica.

Si se utiliza el 'RecordsetClone' del objeto, se puede consultar la propiedad y obtener ese dato (que después se utilice con un fin u otro es caso aparte).
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

Número variable de registros por página

Publicado por David (40 intervenciones) el 07/03/2016 22:57:24
Muchos de los que hacemos preguntas, estamos todavía en Parvulitos (si no, no haríamos tantas preguntas)
La verdad es que no sé dónde y cómo poner todas estas cosas que me explicas.
¿Podrías escribirme lo que tengo que poner como si fuera lo que soy (un semianalfabeto)?

Gracias de nuevo por tu paciencia (que es mayor que mi ignorancia)
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 08/03/2016 09:49:23
Me desconciertas con tus exposiciones y preguntas ....

Desconozco el verdadero dominio que tienes sobre el entorno Access y en particular sobre los objetos que llamamos informes.

También me intriga el saber a que se refiere el comentario: ... El listado y las líneas horizontales y verticales ya los sé hacer.....

Partía del supuesto de que alguien que conoce como aplicar el método LINE en un informe disponía de un cierto nivel y conocía la estructura interna .... todo ello se ha ido desbaratando con las respuestas a las respuestas y desconozco absolutamente en que punto estamos.

Pero eso es lo de menos, utiliza los medios que domines y si de esto sale algo positivo, al menos conocerás uno mas.

Indícame como obtienes el conjunto de datos para el informe, si este fuera una consulta (un clásico) bastaría aplicar en base a ella la función DCount (espero que la conozcas y si es una desconocida es el momento optimo para presentaros y daros un apretón de manos), la función DCount aplicada a la consulta dara como respuesta el numero de items que la componen (y se supone dentro del desconocimiento absoluto por mi parte de esa aplicación) que cada item se correspondería con una línea de la sección detalle de ese informe, la sintaxis seria algo como:

Total_Registros = DCount ("*", "[nombre real de la consulta]")
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

Número variable de registros por página

Publicado por David (40 intervenciones) el 10/03/2016 00:23:18
Perdona, Enrique, pero no quisiera molestarte.
Mi conocimiento de Access es limitado. He ido aprendiendo sobre la marcha, a base de ensayo-error y copiando cosas de otros y adaptándolo a lo que yo iba haciendo. En mis comentarios intento poner una nota de humor que suavice mi ignorancia.
Actualmente no necesito de forma perentoria que el listado salga tan perfecto como lo que pido. Pero mirando por un foro (lo hago a veces para ver si sale algo que pueda adaptar a lo mío) vi que existía la posibilidad de controlar el número de registros impresos por página. Pero las instrucciones que salían en el ejemplo me parecieron un tanto complejas y no supe adaptarlas. Por eso hice mi pregunta.
Las líneas horizontales a las que me refiero, son las que trazo entre registro y registro, y van a lo ancho de la página. Las líneas verticales van desde una línea horizontal a otra, creando las celdas correspondientes a los días de la semana, y dando la apariencia al conjunto de que se trata de una rejilla.
Si los registros tienen siempre la misma altura, no hay problema. Pero si la distancia entre registros crece (si hay pocos registros por página y están distribuidos a lo largo de toda la página, la distancia entre las líneas horizontales será mayor), las líneas verticales deberían crecer para que se mantenga el aspecto de rejilla. En cambio, si hay muchos registros, el espacio entre ellos será menor, y las líneas verticales serán más cortas.
Por otra parte, si creo un cuadro con la expresión: NºTotal=Cuenta("[Apellidos]") ya me sale ese número total. Pero no sé cómo ni dónde escribir una fórmula que me distribuya la mitad del total en cada página.
No me cansaré de agradecer tu ayuda y paciencia
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

Número variable de registros por página

Publicado por Enrique Heliodoro (1663 intervenciones) el 10/03/2016 03:50:22
Si ya obtienes el total, dividirlos no sera el problema (espero), y un método para enviar el resto a la siguiente pagina creo que lo comente antes (hacer visible/invisible un salto de pagina).

Añade un campo en la sección detalle, como valor la unidad, activa su propiedad suma continua y tendrás 'tu contador de registros'
Ese campo lo puedes minimizar y ocultar y no molestara estéticamente.

Ya dispones de un dato (indicador del registro actual) valido para aplicar la formula que expuse antes:

for xx=1 to 30: debug.Print xx, xx mod 15 =0 : next xx

Si lo hubieses ejecutado saldría una lista de numero y a su lado un 'true/false' (que es el resultado útil que nos interesa)

Cambia en esa formula: (xx mod 15 =0 ) los referentes:
xx por el contador que has creado
el 15 por el calculo de los registros (su mitad)

Y en la sección detalle le asignas la formula como la propiedad del salto de pagina, si el 'contador' se llamase: CuentaR y aceptamos como valido: Cuenta("[Apellidos]")

Quedaria algo como esto:

Me.[el objeto salto de línea].Visible = Me.cuentaR mod (Cuenta("[Apellidos]") \2)


Y si quieres apreciar como funciona, (asumo que conoces la ventana de VBA porque asignas valores a variables) haz visible la ventana de inmediato y copia/pega la formula original, ejecuta y si acaso modifícala para experimentar.
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

Número variable de registros por página

Publicado por David (40 intervenciones) el 10/03/2016 20:58:43
Este fin de semana ya tengo deberes
Muchas gracias!!!!!!!
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