Página 1 de 1

Informes con Xailer

Publicado: Jue Jun 18, 2020 4:42 am
por ddupre
Estimados,
Espero se encuentren todos bien.

Toda mi vida me he pasado haciendo informes a la "antigua", recorriendo tablas "a pedal" por código y utilizando @ fil, col say "....." y así, he resuelto centenares de listados sin problema, incluso algunos muy complejos, siempre sobre DBF's y para impresoras de matriz de puntos. El hecho es que ahora pretendo hacerlo trayendo datos de tablas MySQl y estoy totalmente perdido y no se por donde empezar.

Tal vez haya muchas formas de encarar este tema, pero me siento totalmente ignorante y es por eso que consulto si alguien puede darme alguna referencia de ejemplos, manuales, documentación, para poder estudiar.

Desde ya muchas gracias
Saludos
Daniel

Re: Informes con Xailer

Publicado: Jue Jun 18, 2020 3:19 pm
por XeviCOMAS
Daniel,

Veo que no soy el único que utilizo "a mi manera" la impresión de informes, facturas, listados...

Yo utilizo la clase TPrinter. En un .ini tengo las coordenadas, texto, fuente, tamaño... las guardo/recupero para utilizarlas cuando las necesito
Texto, Valores, imágenes, líneas, cuadros, memos...

algo así...

Código: Seleccionar todo

ini...
Text1=70.0,635.0,"A L B A R À","Arial",18,0,800,0,0
Text2=100.0,710.0,"Número","Arial",9,0,400,0,0
Text3=300.0,710.0,"Data","Arial",9,0,400,0,0
Text4=575.0,710.0,"C/Client","Arial",9,0,400,0,0
Text5=800.0,710.0,"Pàg.","Arial",9,0,400,0,0
Text6=1200.0,795.0,"N.I.F.:","Arial",9,0,400,0,0

Nom=1200,430,800,35,1,"Arial",10,0,800,0
Adreca=1200,500,800,50,1,"Arial",10,0,400,0
Poblacio=1200,550,800,50,1,"Arial",10,0,400,0


prg...
   //Texte normal
   For n:=1 to Len( aText )
      If !(aText[n,1] = 0 .and. aText[n,2] = 0)
         Printer:oCanvas:oFont := TFont():Create( aText[n,4], aText[n,5], aText[n,6], aText[n,7] )
         If Len( aText[n] ) >= 9
            Printer:oCanvas:oFont:nOrientation := aText[n,9]
         EndIf
         Printer:oCanvas:TextOut( aText[n,1], aText[n,2], aText[n,3],, aText[n,8] )
         Printer:oCanvas:oFont := Nil
      EndIf
   Next
...
      aNom           := { &(oIni:GetEntry( cTipus, "Nom", "0,0" )) }
      aAdreca        := { &(oIni:GetEntry( cTipus, "Adreca", "0,0" )) }
      aPoblacio      := { &(oIni:GetEntry( cTipus, "Poblacio", "0,0" )) }
...
            If !(aNom[1] = 0 .and. aNom[2] = 0)
               Printer:oCanvas:oFont := TFont():Create( aNom[6], aNom[7], aNom[8], aNom[9] )
               PrinterDrawText( aClient[2], { aNom[1]/10, aNom[2]/10, (aNom[1]+aNom[3])/10, (aNom[2]+aNom[4])/10 }, xAlignment( aNom[5] ), aNom[10] )
               Printer:oCanvas:oFont := Nil
            EndIf

            If !(aAdreca[1] = 0 .and. aAdreca[2] = 0)
               Printer:oCanvas:oFont := TFont():Create( aAdreca[6], aAdreca[7], aAdreca[8], aAdreca[9] )
               PrinterDrawText( aClient[5], { aAdreca[1]/10, aAdreca[2]/10, (aAdreca[1]+aAdreca[3])/10, (aAdreca[2]+aAdreca[4])/10 }, xAlignment( aAdreca[5] ), aAdreca[10] )
               Printer:oCanvas:oFont := Nil
            EndIf

            If !(aPoblacio[1] = 0 .and. aPoblacio[2] = 0)
               Printer:oCanvas:oFont := TFont():Create( aPoblacio[6], aPoblacio[7], aPoblacio[8], aPoblacio[9] )
               PrinterDrawText( aClient[13], { aPoblacio[1]/10, aPoblacio[2]/10, (aPoblacio[1]+aPoblacio[3])/10, (aPoblacio[2]+aPoblacio[4])/10 }, xAlignment( aPoblacio[5] ), aPoblacio[10] )
               Printer:oCanvas:oFont := Nil
            EndIf
De esta manera, lo estoy utilizando, y no me interfiere la base de datos que esten guardados ya sea DBFs o MariaDB

Re: Informes con Xailer

Publicado: Jue Jun 18, 2020 8:56 pm
por JavierCantarero
Buenas, un buen ejemplo lo tienes en la impresión de facturas: \Xailer\Samples\DataControls\DBFData6\Source\PrnDoc.Prg . Con ese módulo de impresión de facturas sacas cualquier informe o documento que quieras imprimir.
Ya es cuestión de que te lo parametrices para poder cambiar coordenadas y textos sin tener que tocar los fuentes como hace XeviComas.
Espero que te sirva.
Saludos

Re: Informes con Xailer

Publicado: Jue Jun 18, 2020 9:39 pm
por ddupre
Javier,
Muchas gracias por el dato, lo voy a ver ya.

Saludos
Daniel
JavierCantarero escribió:Buenas, un buen ejemplo lo tienes en la impresión de facturas: \Xailer\Samples\DataControls\DBFData6\Source\PrnDoc.Prg . Con ese módulo de impresión de facturas sacas cualquier informe o documento que quieras imprimir.
Ya es cuestión de que te lo parametrices para poder cambiar coordenadas y textos sin tener que tocar los fuentes como hace XeviComas.
Espero que te sirva.
Saludos

Re: Informes con Xailer

Publicado: Vie Ago 07, 2020 1:29 am
por ddupre
Hola Foro,
De nuevo por aquí por este tema.
Antes que nada muchas gracias por su ayuda.

Les cuento que pude generar mi primer listado usando REPORT oReport ... y les quiero hacer una consulta breve ¿es posible hacer que la ventana que aparece cuando usamos la cláusula PREVIEW aparezca con el ancho total de "la hoja" o que podamos definir el tamaño de dicha ventana?

Un saludos y nuevamente gracias
Daniel