Power Builder - Page Break

   
Vista:

Page Break

Publicado por jordi (3 intervenciones) el 21/09/2009 13:58:48
Buenas,

Tengo un listado donde quiero que si un grupo no cabe en una página ese grupo entero salte a la siguiente para que no quede cortado en dos páginas diferentes. ¿Tienen alguna idea de como hacer eso o un ejemplo?. Gracias.
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

RE:Page Break

Publicado por miguel (153 intervenciones) el 25/09/2009 01:12:29
Lo que necesitas es una 'protección de huerfanos' tal como es posible en word.

No sé si podrás hacer un datawindow tipo composite y que de alguna forma lo podrás indicar al report, pero no me gustan mucho, son lentos y problemáticos.

Te voy a dar tan sólo unas ideas, (por falta de tiempo). Hicé algo parecido hace años pero ya no tengo ni el código.

Creo que vas a tener que recorrer el datawindow después de haberlo recuperado y tener 2 columnas computadas:
una que indica de alguna forma la primera fila de un grupo con la expresión "first( contador for group 1 )". el otro indicará el último valor de 'contador' del grupo: "last( contador for group 1)"

desde código (por ejemplo el retrieveEnd):
FirstRowOnPage, LastRowOnPage, te darán los valores de la primero y última fila de una página. Con esos valores debería ser posible de determinar si se ha producido el caso que no deseas. Posiblemente tendrás que poner otra columna que contenga page() para saber en qué página una fila está.

Podrás insertar filas antes de la primera fila de un grupo, con tan sólo los valores necesarias para pertenecer al grupo pero sin visualizar ningún valor, hasta que deje de existir la situación deseada.

Esto con la versión 5 de powerbuilder (nuestro cliente tiene miedo a modernizarse). Posiblemente en versiones más nuevas se puede hacer algo más sencillo.

Espero que te he dado alguna idea o dirección para resolver tu problema,

suerte,
Miguel
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

RE:Page Break

Publicado por miguel (153 intervenciones) el 25/09/2009 13:46:02
perdon, habría que insertar las filas en blanco en el grupo anterior al grupo en que tengas el problema de ruptura. (no en el mismo grupo como dijé en anterior 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

RE:Page Break

Publicado por miguel (153 intervenciones) el 26/09/2009 13:33:51
se me ha dado una mejor (aunque te vienen bien las funciones menciados en mis otras respuestas para determinar donde necesitas aplicar el salto):

lo que haría es

añadir un campo al select del dw:

select 0 as cs_salto, ..... resto campos
from ......

luego crearía un grupo en ese datawindow ( antes del que ya tienes) o lo pones como primero campo en el grupo existente, definido por el campo cs_salto y le activas la checkbox 'new page on group break'. ordena también el datawindow por el campo cs_salto y luego el resto de tus campos de ordenación.

cuando quieres un salto de página asignas un valor a la columna cs_salto ( te tocará hacer esto desde código claro) y también tendrás que asignar el mismo valor a las filas que la siguen para que no haga otro salto no deseado después del que quieres.

no sé si te vale ...
un saludo
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