Page 1 of 1

Ayuda Con la clase treport y Sql

Posted: Thu Nov 26, 2009 6:42 pm
by ADBLANCO
Necesito Imprimir desde Sql utilizando la clase tReport, Alguien me pudiera dar un empujoncito???

Gracias :oops:

Re: Ayuda Con la clase treport y Sql

Posted: Thu Nov 26, 2009 7:50 pm
by Armando
Angel:

Si pudieras decirnos cual es el problema.

Para empezar echale un ojo a este link

http://sqlcmd.blogspot.com/2008_10_01_archive.html

Saludos

Re: Ayuda Con la clase treport y Sql

Posted: Thu Nov 26, 2009 7:56 pm
by Mauricio
:D

AdBlanco,

la forma mas sencilla que encontre es generar un arreglo con la informacion a imprimir, haces la busqueda, metes el resultado en una arreglo y sobre ese imprimes.

Code: Select all

static function VtaReporte1()

   cFecha1 := Fecha2Sql( dIni )
   cFecha2 := Fecha2Sql( dFin )

   oMovs := oMysql:Query( "SELECT * FROM movtos where codigo = '" + cCod +;
             "' AND fecha BETWEEN '" + cFecha1 + "'" +  " AND '" + cFecha2 + "' ORDER BY fecha")

    oMovs:gotop()
    do while !oMovs:eof()
       aadd( aRegistros, { oMovs:fieldget('ubicacion'),;
                           oMovs:fieldget('cliente'),;
                           oMovs:fieldget('fecha'),;
                           oMovs:fieldget('codigo'),;
                           oMovs:fieldget('cantidad'),;
                           oMovs:fieldget('precio'),;
                           oMovs:fieldget('importe')})
       oMovs:Skip()
    enddo
    if len( aRegistros ) > 0
       Reporte2(dIni, dFin, cCod, aRegistros)
    else
         msginfo('NO SE ENCONTRARON COINCIDENCIAS', cProgram)
         return nil
    endif

   oMovs:end()
   oMovs := NIL
return nil


static function Reporte3(dIni, dFin, cCodigo, nRuta, aRegistros)
   local oFont1, oFont2, oReport, nRegistro := 1
   local cTexto := '" "
   local cTexto2 :=  " "

   DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
   DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-10 BOLD

   REPORT oReport TITLE 'Prueba  ;
         FOOTER Pág :"+strzero(oReport:nPage,3)    FONT oFont1, oFont2  PREVIEW




      COLUMN TITLE "Cte"                    DATA aRegistros[nRegistro,2] PICTURE '9999'  RIGHT
      COLUMN TITLE "Cliente"                DATA substr(NombreCliente(aRegistros[nRegistro,2]),1,25)
      COLUMN TITLE "Fecha"                  DATA aRegistros[nRegistro,3]
      COLUMN TITLE "Cant"                   DATA aRegistros[nRegistro,5] PICTURE '999'  RIGHT TOTAL
      COLUMN TITLE "Precio"                 DATA aRegistros[nRegistro,6] PICTURE '99,999.99'  RIGHT
      COLUMN TITLE "Importe"                DATA aRegistros[nRegistro,7] PICTURE '999,999.99'  RIGHT TOTAL

      oReport:bSkip := {|| nRegistro++}


   END REPORT
   IF oReport:lCreated
      oReport:oTitle:aFont[1] := {|| 2 }
      oReport:oTitle:aFont[4] := {|| 2 }
      oReport:oTitle:aFont[5] := {|| 2 }
   ENDIF

   ACTIVATE REPORT oReport WHILE nRegistro <= len(aRegistros)

   oFont1:end()
   oFont2:end()
   oReport:end()
return NIL

a lo mejor estoy matando pulgas a balazos pero eso fue lo que me funciono.

saludos,
Mauricio :mrgreen:

Re: Ayuda Con la clase treport y Sql

Posted: Thu Nov 26, 2009 8:42 pm
by ADBLANCO
Gracias, Intentaré esto


:oops:

Re: Ayuda Con la clase treport y Sql

Posted: Fri Nov 27, 2009 1:55 am
by Adolfo
AdBlanco...

Usa mi clase ADOBASE.. mira los ejemplos.. es igual que usando la TDataBase... sencillo.

bajala de aqui..

http://200.72.140.34/privado/adobase/

Saludos


Desde Chile
Adolfo

Re: Ayuda Con la clase treport y Sql

Posted: Fri Nov 27, 2009 7:27 pm
by cmarucco
Angel:
Te envio un reporte utilizando SQL (Eagle1)

Code: Select all

   cNomenclaSql  := "SELECT * FROM nomencla order by descrip"
   onomencla := TMSQuery():New(oCon, cNomenclaSql)
   onomencla :Open(cNomenclaSql)



DEFINE PEN oPen1 WIDTH 2
DEFINE PEN oPen2 WIDTH 1
DEFINE FONT oFon1 NAME "Arial" SIZE 0,-11
DEFINE FONT oFon2 NAME "Arial" SIZE 0,-08
DEFINE FONT oFon3 NAME "Arial" SIZE 0,-14
DEFINE FONT oFon4 NAME "Arial" SIZE 0,-12 BOLD


IF PrinterSetup() = 0
   RETURN nil
ENDIF

REPORT oReport TITLE OemToAnsi("Valorizaci¢n Nomenclador C.S.S a la Fecha : ")+ DToC(ovalores:FieldGet(43));
                 CAPTION OemToAnsi("Valorizaci¢n Nomenclador C.S.S");
                 HEADER "Caja de Servicios Sociales","Fecha:  "+DToC(DATE()),"Pagina: "+STR(oReport:nPage,3),;
                 oReport:SayBitmap(0,5.0,"LOGO.BMP",0.7,0.7);
                 FOOTER OemtoAnsi("- Valorizaci¢n Nomenclador C.S.S - Confeccion¢ : ") + ;
                 Alltrim(cNombreusu) + " Fecha : " + DToC(Date()) + " Hora :"+ Time()  ;
                 CENTER;
                 FONT oFon1, oFon2, oFon3, oFon4;
                 PEN oPen1, oPen2;
                 PREVIEW

     COLUMN TITLE "Digito",""                    DATA onomencla:FieldGet(2)
     COLUMN TITLE "Codigo","Hosp.Amb"            DATA Strzero(onomencla:FieldGet(3),6)
     COLUMN TITLE "Descripcion","Hosp.Int"       DATA onomencla:FieldGet(4) SIZE 70
     COLUMN TITLE "Honorarios","Priv.Amb"        DATA Transform(onomencla:FieldGet(5), "@E 999,999.99") RIGHT
     COLUMN TITLE "Gastos","Priv.Int"            DATA Transform(onomencla:FieldGet(6), "@E 999,999.99") RIGHT
     COLUMN TITLE "Lt"                           DATA onomencla:FieldGet(15)

      IF nRadio1 = 1
           GROUP ON onomencla:FieldGet(2);
           FOOTER "Total Registros Digito "+oReport:aGroups[1]:cValue+"   "+LTrim(Str(oReport:aGroups[1]:nCounter)) ;
           eject;
           FONT 1
      ENDIF

     END REPORT

oReport:bSkip := {||  onomencla:skip(1) }
oReport:nTitleUpLine := RPT_SINGLELINE
oReport:nTitleDnLine := RPT_SINGLELINE


ACTIVATE REPORT oReport  WHILE !onomencla:Eof();
                         ON CHANGE Nomencla035()

RETURN nil
 
Espero que sea lo que necesitas y te pueda servir .
Un abrazo .

Re: Ayuda Con la clase treport y Sql

Posted: Fri Nov 27, 2009 8:46 pm
by ADBLANCO
Es EXACTAMENTE lo que necesitaba,

Gracias, Arigato :lol: