Report

Post Reply
User avatar
Jairo Barbosa
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Report

Post by Jairo Barbosa »

Antonio

Saludo cordial

En los Report de FWH como puedo cambiar la posición de “Total” ubicarlo en otro sitio del informe y como puedo adicionar otros valores que deriven del total.

Gracias Antonio

Jairo
User avatar
Jairo Barbosa
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: Report

Post by Jairo Barbosa »

Antonio y demás integrantes del foro

Si mi pregunta no tubo respuesta les agradeceré me enseñen como se llama Easy Report desde código

Gracias de antemano

Jairo Barbosa
User avatar
MauroArevalo
Posts: 107
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia
Has thanked: 2 times
Contact:

Re: Report

Post by MauroArevalo »

Jairo:

Te pongo una parte de mi codigo para la impresión de Facturas por Computador, cada cliente tiene su propio diseño, logo, etc., y lo imprimo con esta rutina. Tienes que enlazar el VRD.PRG a tu programa y colocar el #include vrd.ch en el prg que vayas a imprimir.

Si quieres con mucho gusto conectate al ms hymplus@hotmail.com y con gusto te puedo despejar dudas.

Code: Select all | Expand

EASYREPORT oVRD NAME Pub:DIRLOCAL+Pub:CODEMP+"\REP\factura.vrd" PREVIEW (.T.) OF ventana IF oVRD:lDialogCancel = .T.   RETURN( .F. ) ENDIF PRINTAREA 1 OF oVRD ; ITEMIDS    { 101, 102, 103, 104, 170, 171, 172, 150, 181, 180, 173, 174, 175, 182, 183, 184, 185, 186, 187, 190} ; ITEMVALUES {V101,V102,V103,V104,V170,V171,V172,V150,V181,V180,V173,V174,V175,V182,V183,V184,V185,V186,V187,V190} PRINTAREA 2 OF oVRD SELE (SELTEMP) DBGOTOP() SELE (SELTEMP) DBGOTOP() DO WHILE .NOT. EOF()   V330:=TRANSFORM(RECNO(),"9,999")   V320:=(SELTEMP)->HTARTICU   IF NITEMP="860534227"          V302:=ALLTRIM(SUBS((SELTEMP)->HTDETALL,1,28))+"-"+ALLTRIM((SELTEMP)->HTOBSER2)     ELSEIF NITEMP="900186800"          V302:=(SELTEMP)->HTDETALL+" "+(SELTEMP)->HTOBSER2    ELSE     V302:=ALLTRIM(SUBS((SELTEMP)->HTDETALL,1,28))   ENDIF   V303:=TRANSFORM((SELTEMP)->HTCANTID,"99999.99")   IF DOLAR=.F.     VRporiva:=(SELTEMP)->HTPORIVA     VRtotale:=(SELTEMP)->HTVRUNIT     VRpordes:=(SELTEMP)->HTPORDES     IF ((SELTEMP)->HTFORIVA=1)      //*******IVA INCLUIDO*********       Divide:=((VRporiva/100)+1)       VRtota:=ROUND(VRtotale,Decimales)       VRprde:=(VRpordes/100)       Etotal:=ROUND((VRtota*VRprde),Decimales) //Valor Descuento       Vrunit:=VRtota-Etotal       VRfinal:=ROUND((Vrunit/Divide),Decimales)       V304:=TRANSFORM(VRfinal,"999,999,999")      ELSE       V304:=TRANSFORM((SELTEMP)->HTVRUNIT,"999,999,999")     ENDIF *    V304:=TRANSFORM((SELTEMP)->HTVRUNIT,"999,999,999")     V305:=TRANSFORM((SELTEMP)->HTSUBTOT,"999,999,999")     V306:=TRANSFORM((SELTEMP)->HTDESCUE,"999,999,999")     V307:=TRANSFORM((SELTEMP)->HTVRIVAS,"999,999,999")     V308:=TRANSFORM((SELTEMP)->HTVRTOTA,"999,999,999")     V309:=TRANSFORM((SELTEMP)->HTPORIVA,"999,999,999")     V310:=TRANSFORM((SELTEMP)->HTPORDES,"999,999,999")     V311:=V451:=(SELTEMP)->HTOBSER2     V312:=TRANSFORM(ROUND(((SELTEMP)->HTVRUNIT)/(((SELTEMP)->HTPORIVA/100)+1),0),"999,999,999")     V313:=TRANSFORM(((SELTEMP)->HTVRTOTA-(SELTEMP)->HTVRIVAS),"999,999,999")    ELSE     V307:=" " //No Genera IVA     V309:=" " //No Genera IVA*    V305:=" " //Subtotal no lo muestra en la factura     V306:=" " //Valor $ de Descuento no lo muestra en la factura     V311:=V451:=" " //No genera     V312:=" " //No genera     V304:=TRANSFORM((SELTEMP)->HTDOLARE,"999,999,999.99")     V310:=TRANSFORM((SELTEMP)->HTPORDES,"999,999,999.99")     SUB:=(HTCANTID*HTDOLARE)     V305:=TRANSFORM(SUB,"999,999,999.99")     DES:=ROUND( (((HTCANTID*HTDOLARE)*HTPORDES)/100),2)     TOT:=(SUB-DES)     V308:=TRANSFORM(TOT,"999,999,999.99")     V313:=TRANSFORM(TOT,"999,999,999.99")   ENDIF   IF Pub:CODEMP="LU" //PARA ILUMINATTY     V305:=TRANSFORM(((SELTEMP)->HTSUBTOT-(SELTEMP)->HTDESCUE),"999,999,999")   ENDIF   IF Pub:CODEMP="20"  //PARA METALES     PRINTAREA 3 OF oVRD  ITEMIDS    { 330, 320, 302, 303, 304, 305, 306, 307, 308, 311};                          ITEMVALUES {V330,V320,V302,V303,V304,V305,V306,V307,V308,V311}    ELSE     PRINTAREA 3 OF oVRD ITEMIDS    { 330, 320, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313};                         ITEMVALUES {V330,V320,V302,V303,V304,V305,V306,V307,V308,V309,V310,V311,V312,V313}   ENDIF   FACDOL:=(SELTEMP)->HTFACDOL   //TOTALES//   IF DOLAR=.F.     CANT:=CANT+HTCANTID     SUBT:=SUBT+HTSUBTOT     DEST:=DEST+HTDESCUE     IVAT:=IVAT+HTVRIVAS     VRTT:=VRTT+HTVRTOTA    ELSE     CANT:=CANT+HTCANTID     SUBT:=SUBT+SUB     DEST:=DEST+DES     IVAT:=" "     VRTT:=VRTT+TOT   ENDIF   (SELTEMP)->(DBSKIP())   IF oVRD:nNextRow > oVRD:nPageBreak     PAGEBREAK oVRD     PRINTAREA 1 OF oVRD ;     ITEMIDS    { 101, 102, 103, 104, 170, 171, 172, 150, 181, 180, 173, 174, 175, 182, 183, 184, 185, 186, 187} ;     ITEMVALUES {V101,V102,V103,V104,V170,V171,V172,V150,V181,V180,V173,V174,V175,V182,V183,V184,V185,V186,V187}     PRINTAREA 2 OF oVRD   ENDIF ENDDO IF DOLAR=.F.   V403:=TRAN(CANT,"999,999,999")   V405:=V505:=TRAN(SUBT,"999,999,999")   V406:=TRAN(DEST,"999,999,999")   V407:=V507:=TRAN(IVAT,"999,999,999")   V408:=TRAN(VRTT,"999,999,999")   V410:=V520:=ALLTRIM(GVobs)   V411:=TRAN(GVfle,"999,999,999")   V412:=V512:=TRAN(((VRTT)-(GVret+GViva+GVica)),"999,999,999")   V413:=TRAN(GVret,"999,999,999")   V414:=TRAN(GViva,"999,999,999")   V415:=TRAN(GVica,"999,999,999")  ELSE   V403:=TRANSFORM(CANT,"999,999,999.99")   V405:=V505:=TRANSFORM(SUBT,"999,999,999.99")   V406:=TRANSFORM(DEST,"999,999,999.99")   V407:=V507:=TRANSFORM(IVAT,"999,999,999.99")   V408:=TRANSFORM(VRTT,"999,999,999.99")   V410:=V520:=ALLTRIM(GVobs)   V411:=TRAN(GVfle,"999,999,999.99")   V412:=V512:=TRAN(((VRTT)-(GVret+GViva+GVica)),"999,999,999.99")   V413:=TRAN(GVret,"999,999,999.99")   V414:=TRAN(GViva,"999,999,999.99")   V415:=TRAN(GVica,"999,999,999.99") ENDIF IF Pub:CODEMP="LU" //PARA ILUMINATTY   V405:=TRAN((SUBT-DEST),"999,999,999") ENDIF SDOTOT:=((VRTT)-(GVret+GViva+GVica)) VALORES() V521:=V409:=CAMT PRINTAREA 4 OF oVRD ITEMIDS    { 403, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 451} ;                     ITEMVALUES {V403,V405,V406,V407,V408,V409,V410,V411,V412,V413,V414,V415,V451} PRINTAREA 5 OF oVRD ITEMIDS    { 520, 521, 505, 507, 512} ;                     ITEMVALUES {V520,V521,V505,V507,V512}END EASYREPORT oVRD 


Saludos,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programación....
User avatar
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Report

Post by Armando »

Jairo:

El ejemplo de Mauro (Saludos Mauro) es perfectamente funcional, hay otra forma de usar EasyReport que da un poco de más libertad al usuario, veamos un pequeño ejemplo.

Code: Select all | Expand

// Definimos el objetoEASYREPORT oVRD NAME (cFmto) PREVIEW (cFolNdv)->FOL_VPN ;    OF oWindow TITLE "Nota de venta "+ALLTRIM(oHdr:HDR_FAC);    COPIES (cFolNdv)->FOL_CDN    oVrd:aAlias := {(cEmpresa),;    //  1        (cHdrOpe),;                 //  2        (cDetOpe),;                 //  3        (cClienta),;                //  4        (cVendedor),;               //  5        (cProducto)}                //  6    PRINTAREA 1 OF oVrd             // Header    (cDetOpe)->(DBSEEK(oHdr:HDR_OPE))    DO WHILE (cDetOpe)->(! EOF()) .AND. (cDetOpe)->DET_OPE == oHdr:HDR_OPE        PRINTAREA 2 OF oVrd         // Detail        (cDetOpe)->(DBSKIP())    ENDDO    PRINTAREA 3 OF oVrd             // TotalsEND EASYREPORT oVRD 


Sí, esto es todo el código necesario para imprimir el reporte, lo destacable aquí es el código oVrd:aAlias, en este código estamos pasando al objeto VRD los Alias que usamos en nuestro PRG.

Observa, también, que estoy enviando a imprimir áreas completas, ejemplo PRINTAREA 2 OF oVRD // Detail y es de suponerse que en esa área hay definidos varios campos de la DBF que quiero imprimir, de hecho esa área es el detalle de una factura donde hay El producto, la descripción, el precio unitario, la cantidad, el importe etc. Ahora la pregunta es ¿Cómo sabe EasyReport lo que debe imprimir?

Sencillo !, en el diseñador del reporte debemos definir las áreas y los campos de cada área, en cada campo debemos definir/relacionar el nombre del campo de la DBF que queremos imprimir, déjame mostrarte una imágen.

Image

En esta primera imágen vemos cómo esta definida el área DETAIL, observa que esta formada por 6 campos.

Image

Esta segunda imágen es la de las propiedades del campo DESCRIPCION observa que hay un botón con una pequeña marca en color rojo (Arriba del puntero del ratón) al dar clic sobre este botón abrimos otro diálogo donde podemos escribir cualquier fórmula, en la siguiente imagén veras lo que tengo escrito.

Image

Alias6->MOD_DES Es puro código xBase, estamos enviando a imprimir la descripción del modelo, campo tomado del Alias6 que si miras en el trozo de código al inicio del post veras que se trata de la DBF Producto.

Creo que de esta forma podras aumentar o disminuir campos al diseño de tu reporte sin necesidad de volver a compilar tu aplicación, lo que la hace más independiente del código.

Un saludo
Last edited by Armando on Wed Oct 21, 2009 7:57 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Jairo Barbosa
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia
Contact:

Re: Report

Post by Jairo Barbosa »

Mauro Armando

Muy agradecido muy claro el ejemplo lo organizare a mi necesidad y si tengo problemas seguramente les estaré solicitando ayuda.
Empleo el Report de FW y no encontré la libertad de disponer de los espacios del reporte


Cordialmente

Jairo Barbosa
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Post by jfafive »

Hola,

Entiendo que para usar EasyReport desde FWH necesitas el modulo VRD.PRG?

En ese caso, ¿como puedo obtener ese modulo de enlace?

Saludos,
Javier,
FWH 8.04 2008
User avatar
MauroArevalo
Posts: 107
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia
Has thanked: 2 times
Contact:

Re: Report

Post by MauroArevalo »

Javier:

En el directorio de EasyReport encuentras los prgs que necesitas para enlazar con tu sistema:

\EaseRerport\Fivewin\Source

Lor prg que necesitas son:

VRD.PRG
VRDBCODE.PRG
VRDITEM.PRG

Ademas necesitas el archivo VRD.CH que lo encuentras dentro de \EaseRerport\Fivewin\include

En tu prg donde llamas al EasyReport llamas el archivo vrd.ch Ejemplo:

Code: Select all | Expand

#include "FiveWin.ch"#include "vrd.ch"#include "dtpicker.ch"...Tú  codigoFUNC REPOFACTURA()EASYREPORT oVRD NAME "\MIPROGRAMA\REPORTE\factura.vrd" PREVIEW (.T.) OF Dlg1 PRINTAREA 1 OF oVRD PRINTAREA 2 OF oVRD PRINTAREA 3 OF oVRD   PRINTAREA 4 OF oVRD  PRINTAREA 5 OF oVRD END EASYREPORT oVRD 


Tambien puedes crear la libreria con los prgs que tienes por ejemplo EASYREPO.LIB y la enlazas con tu programa.

Saludos,
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programación....
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Report

Post by jfafive »

Ok,

Gracias por la información, Mauricio.

Saludos. :lol:
Javier,
FWH 8.04 2008
elmoiquique
Posts: 323
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Report

Post by elmoiquique »

alguien tiene algun ejemplo funcional con easyreport
Fivewin-Xharbour 24.09, Iquique, Chile
diegopolverelli
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Re: Report

Post by diegopolverelli »

HOLA, YO ESTOY USANDO EASY REPORT 1.7.6
COMPILO CON FIVEWIN 2.8 Y USO EL BLINKER 7.0 PARA ENLAZAR Y LOS PROGRAMAS ME FUNCIONAN PERFECTAMENTE (REPORTES). POR EJ. UN PROGRAMA QUE SE LLAMA RECI04.PRG

PERO HACE RATO QUE USO TAMBIEN FWH, Y NO PUEDO COMPILAR EL RECI04.PRG
ME DICE QUE NO ENCUENTRA LA FUNCION VRD. ¿ALGUIEN TIENE IDEA SI ES COMPATIBLE, SI CON ESA VERSION DE EASY REPORT PUEDO COMPILAR CON HAUBOUR? SI SE PUEDE, ¿TIENE IDEA DE QUE ME ESTARA FALTANDO HACER? USO FWH104. Y AHORA LO QUE HAGO ES USAR CASI TODO CON FWH, Y 5 O 6 .EXE'S CON BLINKER, PERO ME GENERA 16 BITS, CON TODOS LOS DRAMAS QUE ESTO TRAE.
MUCHAS GRACIAS.
Post Reply