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
Responder
ddupre
Mensajes: 311
Registrado: Lun Nov 12, 2007 3:53 pm

Informes con Xailer

Mensaje 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
Avatar de Usuario
XeviCOMAS
Mensajes: 536
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Informes con Xailer

Mensaje 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
Un Saludo,
Xevi.
JavierCantarero
Mensajes: 34
Registrado: Mié Jul 23, 2014 10:26 am

Re: Informes con Xailer

Mensaje 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
ddupre
Mensajes: 311
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Informes con Xailer

Mensaje 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
ddupre
Mensajes: 311
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Informes con Xailer

Mensaje 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
Responder