[RESUELTO] Macro que envíe texto a cabecera informe

Discute sobre las herramientas de la base de datos
Responder
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

[RESUELTO] Macro que envíe texto a cabecera informe

Mensaje por pmartimor »

Buenos días:
Estoy buscando la forma de enviar una cadena de caracteres (un trocito de texto) al encabezado de un informe a través de una macro. El motivo es que quiero utilizar este informe para mostrar resgistros filtrado de distintas formas, y debería incluir en la cabecera del informe qué es lo que intento mostrar en el informe. Por ejemplo ejemplo: 'bajas entre fechas', o 'altas entre fechas', etc. Otra opción sería crear distintos informes, pero al ser unas cinco formas de pedir la información que muestra, he pensado en la posibilidad de reutilizar el mismo informe.
Saludos y gracias por vuestra paciencia.
Última edición por pmartimor el Jue Mar 29, 2018 9:09 pm, editado 2 veces en total.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Macro que envie texto a cabecera informe

Mensaje por RMG »

Hola,

Puedes hacerlo al igual que cargas las fechas de otro hilo. Pones un combobox en el formulario cargado con los titulos del informe y solo debes seleccionr el que corresponda.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Macro que envie texto a cabecera informe

Mensaje por Longi »

Buenas!
He hecho una pequeña macro, y parece funcionar, aunque luego ya si gusta el resultado o no es otra cosa.
Lo que sí, tienes que abrir con el botón directamente en la macro, no con la macro genérica de abrir cualquier informe (he probado y así no parece funcionar, pero al lanzarla directamente desde macros, abre y modifica 'adecuadamente' el informe):

Código: Seleccionar todo

Sub InformeTexto
    '--------------------------------------------------------------------
    ' 0 Declaramos las variables
    
    Dim oInforme As Object, ocontroller
    Dim oTexttable As Object, orow As Object,  Fila
    Dim Ntexttable as integer, i as integer, z as integer, Filas As Integer
    '-----------------------------------------------------------------------
    '1º Abrimos el informe, pasamos por todas las tablas
    
    ocontroller = Thisdatabasedocument.currentController
    if not ocontroller.isconnected then ocontroller.connect                                              ' Mantenemos la conexión
    oInforme = Thisdatabasedocument.reportdocuments.getbyname("infEntreFechasNac").open                        ' Abrimos el informe
    oTexttable = oInforme.Texttables(0)                                                                ' La tabla que toca en cada paso del ciclo
    oCell = oTextTable.getCellByPosition(0, 0)                                                           ' La celda sobre la que actuaremos
    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
    oCurs.String= "Esta vez debe funcionar"                                                ' Insertamos el texto
    '----------------------------------------------------------------------------------------
    ' 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 = 12                                                                           ' Tamaño de la letra
    oCurs.CharPosture = com.sun.star.awt.FontSlant.ITALIC                                          ' Cursiva
    oCurs.ParaAdjust = com.sun.star.style.ParagraphAdjust.LEFT                                   ' Centrada
    Fila = oTexttable.rows(0)                                                                            ' La fila que toca (Primera en este caso)
    oTexttable.getRows().getByIndex(i).IsAutoHeight = True                                               ' Autoaltura


End sub
Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Macro que envie texto a cabecera informe

Mensaje por pmartimor »

Gracias por vuestra rápida respuesta.
Las dos opciones funcionan. :super:
Saludos cordiales.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Responder