In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Informes con Xailer

Foro público de Xailer en español
ddupre
Posts: 306
Joined: Mon Nov 12, 2007 3:53 pm

Informes con Xailer

Postby ddupre » Thu Jun 18, 2020 4:42 am

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
User avatar
XeviCOMAS
Posts: 530
Joined: Sat Mar 12, 2011 8:16 pm

Re: Informes con Xailer

Postby XeviCOMAS » Thu Jun 18, 2020 3:19 pm

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í...

Code: Select all

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
Un Saludo,
Xevi.
JavierCantarero
Posts: 34
Joined: Wed Jul 23, 2014 10:26 am

Re: Informes con Xailer

Postby JavierCantarero » Thu Jun 18, 2020 8:56 pm

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
ddupre
Posts: 306
Joined: Mon Nov 12, 2007 3:53 pm

Re: Informes con Xailer

Postby ddupre » Thu Jun 18, 2020 9:39 pm

Javier,
Muchas gracias por el dato, lo voy a ver ya.

Saludos
Daniel

JavierCantarero wrote: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
ddupre
Posts: 306
Joined: Mon Nov 12, 2007 3:53 pm

Re: Informes con Xailer

Postby ddupre » Fri Aug 07, 2020 1:29 am

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

Return to “Spanish”