Voy a ser escueto... A mi Informe "Inf_ModQuirofanos_ORB", Agrupado por "SERVICIOS", no le he conseguido poner un TOTAL DE REGISTROS que hay en cada hoja (Servicio) del Informe.
He probado con todo lo que he encontrado en el foro, (COUNTA, ETC..) pero sin resultado...
Me gustaría ponerlo en SERVICIOS (Encabezado) aunque a último remedio me valdría en el Pie de Página.
Mi ejemplo, en la base MOD_QUIROFANOS, al entrar en "BUSQUEDAS Y LISTADOS" (Formulario "Form_PROGRAMACION") y elegir de fecha inicial 20/03/2018 y fecha final 20/03/18 (fecha de hoy), En SERVICIOS dejamos "Todos los Servicios (viene por defecto) y darle al botón "BUSQUEDA AVANZADA" me sale un resultado en pantalla de 6 registros, y al lanzar el Informe (Botón "VER INFORME") sale perfecto y agrupado por Servicios... sólo me falta poner un "campo Total" de registros por página y colorear alternativamente las filas (pero esto último lo plantearé en otro Hilo para no mezclar)..
En definitiva...alguien me sugiere algo para conseguir LOS TOTALES de registros por página (Número de quirófanos anulados por SERVICIO en la fecha elegida)...??
enlace a la base... https://drive.google.com/open?id=169DrV ... FdpilAJOUb
[RESUELTO] Informe: TOTAL DE REGISTROS que hay en cada hoja
[RESUELTO] Informe: TOTAL DE REGISTROS que hay en cada hoja
Última edición por mauricio el Mié Mar 21, 2018 4:17 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
Apache OpenOffice 4.1.5 -- Windows 10
Re: Informe: TOTAL DE REGISTROS que hay en cada hoja
Buenas!
Si tienes funcionando el ORB en el que te igualé las alturas de los campos que habías puesto, entonces mira a ver si esto te puede valer.
Posiblemente necesite un parche para cuando los campos sean de más de una fila (acabo de caer en eso), pero de todos modos mira a ver cómo va.
He calculado las filas que tienen texto (la mitad de las que genera ORB en cada tabla de las que nos interesan (que no son todas).
Después escalé una tabla para ponerme en la que está en el inicio de cada hoja, añadí una fila en la parte de encima, le añadí la palabra 'TOTAL' y al lado (segunda celda) el número de filas contadas anteriormente.
Finalmente, le quité el color a esa fila, para que no quede de color carne y que parezca que está en el encabezamiento.
El parche lo debes poner allí donde había colocado yo el tema de la autoaltura (Recuerda '================================)
¡Crucemos los dedos!
Si no resuelve en los multilínea, ya miramos con otro parchecillo, recorriendo todas las filas, y contamos aquellas en las que en su segunda fila tiene texto (que serían las que tienen la fecha). Pero ahora ando con un poco de prisa.
Eso, que a ver si hay suerte!
Un saludo!
Si tienes funcionando el ORB en el que te igualé las alturas de los campos que habías puesto, entonces mira a ver si esto te puede valer.
Posiblemente necesite un parche para cuando los campos sean de más de una fila (acabo de caer en eso), pero de todos modos mira a ver cómo va.
He calculado las filas que tienen texto (la mitad de las que genera ORB en cada tabla de las que nos interesan (que no son todas).
Después escalé una tabla para ponerme en la que está en el inicio de cada hoja, añadí una fila en la parte de encima, le añadí la palabra 'TOTAL' y al lado (segunda celda) el número de filas contadas anteriormente.
Finalmente, le quité el color a esa fila, para que no quede de color carne y que parezca que está en el encabezamiento.
El parche lo debes poner allí donde había colocado yo el tema de la autoaltura (Recuerda '================================)
¡Crucemos los dedos!
Código: Seleccionar todo
'===================================================================
'----------------------------------------
' Iniciamos parche para autoaltura
NTexttable = oreportdoc.Texttables().GetCount() ' Número de tablas
For z=2 to NTexttable-1 ' Revisamos todas las tablas
oTexttable = oreportdoc.Texttables(z) ' La tabla que toca en cada paso del ciclo
Filas = oTexttable.rows.count-1 ' Filas que tiene la tabla
Columnas = oTexttable.Columns.count-1 ' Columnas que tiene la tabla
Fila = oTexttable.rows ' Objeto Fila
'------------------------------------------------------------------------
' Vamos a inspeccionar cada tabla, para seleccionar las que tienen en la primera celda la expresión entrecomillada
oCell = oTextTable.getCellByPosition(0, 0) ' Primera celda de la tabla que toca
oText = oCell.Text ' Texto de la celda
oCurs = oText.createTextCursor() ' Cursor en la celda
oCurs.gotoEND(True) ' Cursor al final de la celda
if oCurs.GetString ="SERVICIO:" Then ' Condición para seleccionar la tabla
oTexttable = oreportdoc.Texttables(z+1) ' La tabla que toca en cada paso del ciclo sería la siguiente a la que tiene en su primera celda la palabra 'SERVICIO'
Filas = oTexttable.rows.count-1 ' Filas que tiene la tabla
'------------------------------------------------------
' Calculamos del total de filas las que tienen texto (hay otras en el medio que no lo tienen y que las genera ORB)
Total= Cint((Filas+1)/2) ' Filas en las que hay texto (las que se ven en el informe)
For i=0 to Filas ' Recorremos todas las filas de la tabla
Fila = oTexttable.rows(i) ' La fila que toca (Tercera en este caso)
oTexttable.getRows().getByIndex(i).IsAutoHeight = True ' Autoaltura
Next ' Siguiente fila
'---------------------------------------------
' Tomamos la tabla previa, para poder escribir como que fuese en el encabezamiento, pero es mentira
oTexttable = oreportdoc.Texttables(z) ' La tabla previa a la que usamos antes
'---------------------------------------------------------------------------
' 2º Insertamos una fila al principio y damos color blanco a las celdas
oTexttable.Rows.insertByIndex(0,1) ' Insertamos fila al principio de la tabla
oTexttable.getCellByPosition(0,0).setString(Trim("TOTAL")) ' Ponemos TOTAL en la primera celda
oCell = oTextTable.getCellByPosition(0,0) ' Seleccionamos la primera celda
oCell.setPropertyValue("BackColor", RGB(255, 255,255 )) ' El color que ponemos (blanco)
oCell = oTextTable.getCellByPosition(1,0) ' Seleccionamos la siguiente celda para poner los resultados
oCell.setPropertyValue("BackColor", RGB(255, 255,255 )) ' El color que ponemos
oTexttable.getCellByPosition(1, 0).setString(Total) ' Ponemos TOTAL en la segunda celda
End if ' Acabamos la condición para seleccionar la tabla
Next ' Vamos a la siguiente tabla
'------------------------------------------------------------
' Acabamos el parche de autoaltura
'==================================================================
Eso, que a ver si hay suerte!
Un saludo!
Editado: En prueba rápida parece que funciona |
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: Informe: TOTAL DE REGISTROS que hay en cada hoja
y tanto que me acuerdooooo....
Bueno... otra vez.... solucionado (me falta solo un pequeño detalle que al final comento...
Al final añadí tu código, con pequeñas salvedades (poner el TOTAL casi al final de la línea ya que al principio no me gustaba mucho...)
quedó el código así...
Funciona de lujo... sólo me queda investigar como aumentarle un poco la Fuente (que ya he probado a hacerlo y... no sale....
pero... estoy muy contengo... Gracias...
os dejo la base otra vez (para quien quiera completar el código)...
https://drive.google.com/drive/folders/ ... sp=sharing
Bueno... otra vez.... solucionado (me falta solo un pequeño detalle que al final comento...
Al final añadí tu código, con pequeñas salvedades (poner el TOTAL casi al final de la línea ya que al principio no me gustaba mucho...)
quedó el código así...
Código: Seleccionar todo
'----------------------------------------
' Iniciamos parche para autoaltura
NTexttable = oreportdoc.Texttables().GetCount() ' Número de tablas
For z=2 to NTexttable-1 ' Revisamos todas las tablas
oTexttable = oreportdoc.Texttables(z) ' La tabla que toca en cada paso del ciclo
Filas = oTexttable.rows.count-1 ' Filas que tiene la tabla
Columnas = oTexttable.Columns.count-1 ' Columnas que tiene la tabla
Fila = oTexttable.rows ' Objeto Fila
'------------------------------------------------------------------------
' Vamos a inspeccionar cada tabla, para seleccionar las que tienen en la primera celda la expresión entrecomillada
oCell = oTextTable.getCellByPosition(0, 0) ' Primera celda de la tabla que toca
oText = oCell.Text ' Texto de la celda
oCurs = oText.createTextCursor() ' Cursor en la celda
oCurs.gotoEND(True) ' Cursor al final de la celda
if oCurs.GetString ="SERVICIO:" Then ' Condición para seleccionar la tabla
oTexttable = oreportdoc.Texttables(z+1) ' La tabla que toca en cada paso del ciclo sería la siguiente a la que tiene en su primera celda la palabra 'SERVICIO'
Filas = oTexttable.rows.count-1 ' Filas que tiene la tabla
'------------------------------------------------------
' Calculamos del total de filas las que tienen texto (hay otras en el medio que no lo tienen y que las genera ORB)
Total= Cint((Filas+1)/2) ' Filas en las que hay texto (las que se ven en el informe)
For i=0 to Filas ' Recorremos todas las filas de la tabla
Fila = oTexttable.rows(i) ' La fila que toca (Tercera en este caso)
oTexttable.getRows().getByIndex(i).IsAutoHeight = True ' Autoaltura
Next ' Siguiente fila
'---------------------------------------------
' Tomamos la tabla previa, para poder escribir como que fuese en el encabezamiento, pero es mentira
oTexttable = oreportdoc.Texttables(z) ' La tabla previa a la que usamos antes
'---------------------------------------------------------------------------
' 2º Insertamos una fila al principio
oTexttable.Rows.insertByIndex(0,0) ' Insertamos fila al principio de la tabla
oTexttable.getCellByPosition(3,0).setString(Trim("(TOTAL: ") & Total & ")") ' Ponemos Etiqueta "TOTAL"
For i=0 to Columnas
oCell = oTextTable.getCellByPosition(i,0) ' Seleccionamos la celda
oCell.setPropertyValue("BackColor", RGB(255, 255,153 )) 'El color que ponemos... amarillo
next
AjustaAnchoColumna
' oCell = oTextTable.getCellByPosition(3,0) ' Seleccionamos la siguiente celda para poner los resultados
' oCell.setPropertyValue("BackColor", RGB(255, 255,153 )) ' El color que ponemos
' oTexttable.getCellByPosition(3,0).setString(Total & ")") ' Ponemos TOTAL en la segunda celda
End if ' Acabamos la condición para seleccionar la tabla
Next ' Vamos a la siguiente tabla
'------------------------------------------------------------
' Acabamos el parche de autoaltura
'------------------------------------------------------------
'Coloreamos lineas alternas
for i=2 to filas step 2
Fila = oTexttable.rows(i) ' Filas en las que hay texto (las que se ven en el informe)
Fila.BackColor = RGB(233,241,246) ' Color que aplicamos alternando en las filas
next
pero... estoy muy contengo... Gracias...
os dejo la base otra vez (para quien quiera completar el código)...
https://drive.google.com/drive/folders/ ... sp=sharing
Apache OpenOffice 4.1.5 -- Windows 10
Re: Informe: TOTAL DE REGISTROS que hay en cada hoja
Para el formato del texto que hay en el interior de una celda de una tabla de texto (que es el caso) puedes añadir alguna línea más al final del parche, que te tiene situado en la celda en la que te estás manejando (la (3,0)):
Ni que decir tiene que le puedes cambiar el nombre de la fuente, el color, si es cursiva o no, su localización dentro de la celda, tamaño de letra, si la subrayas o no.....
Todas las técnicas que he usado las tienes en distintas macros en mi colección de ejemplos de macros para informes sin ORB, que como ves, también se pueden usar con ORB, aunque no todas (especialmente algunas con textos, etc). https://forum.openoffice.org/es/forum/v ... 70&t=11605
Ah! si lo consideras solucionado, márcalo como tal.
Otro saludo!
Código: Seleccionar todo
oText = oCell.Text ' Texto en el interior de la celda
oCurs = oText.createTextCursor() ' Generamos un cursor de texto
oCurs.gotoEND(True) ' Vamos hasta el final del texto, indicando que las acciones se aplican a todo el texto de la celda
'----------------------------------------------------------------------------------------
' 3º Damos formato al texto seleccionado
oCurs.CharFontName = "Arial" ' Nombre de la fuente
oCurs.CharUnderline = com.sun.star.awt.FontUnderline.SINGLE ' Subrayado
oCurs.CharWeight = com.sun.star.awt.FontWeight.BOLD ' Negrita
oCurs.CharColor = RGB(255,0,255) ' Color del texto
oCurs.CharHeight = 8 ' Tamaño de la letra
oCurs.CharPosture = com.sun.star.awt.FontSlant.ITALIC ' Cursiva
oCurs.ParaAdjust = com.sun.star.style.ParagraphAdjust.CENTER ' Centrada
Todas las técnicas que he usado las tienes en distintas macros en mi colección de ejemplos de macros para informes sin ORB, que como ves, también se pueden usar con ORB, aunque no todas (especialmente algunas con textos, etc). https://forum.openoffice.org/es/forum/v ... 70&t=11605
Ah! si lo consideras solucionado, márcalo como tal.
Otro saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: Informe: TOTAL DE REGISTROS que hay en cada hoja
Como siempre.. dando soluciones efectivas...
Gracias (otra vez)...
Gracias (otra vez)...
Apache OpenOffice 4.1.5 -- Windows 10