Page 1 of 1
Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Tue Mar 09, 2010 9:34 pm
by ruben Dario
Por fa alguien tiene un ejemplo aplicando ADO manejando la funcion GROUP ON
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 1:11 am
by sjingo
Ruben
En estos momentos también me estoy peleando con los reportes, con listados básicos no he tenido ningún problema pues lo hago mediante el método ::Report( cTitle, lPreview, lModal, bSetUp, aGroupBy ) de la Clase XBrowse y no me he preocupado de los recorridos del recordset ni nada, ya está automatizado. Como puedes darte cuenta el método tiene un parámetro aGroupBy, no lo he probado y no sé como aplicarlo, pero si alguién más nos da una mano pienso que debe funcionar.
Saludos
Marcelo Jingo
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 2:54 am
by Armando
Amigos:
Cuando me enfrente a esos problemas y dada la premura de tiempo tuve que hacer los cortes vía código puro, obviamente se requiere que los datos vengan ordenados.
Despues de solventado el problema no me he dado a la tarea de investigar más sobre la clase xBrowse.
Si les interesa mi alternativa de solución podemos entrar en el tema.
Saludos
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 1:22 pm
by nageswaragunupudi
If the browse is sorted on the first column, aGroupBy can be 1 or { 1 }.
If the browse is sorted on first and second columns, aGroupBy can be { 1, 2 }.
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 2:09 pm
by sjingo
Probé con el parámetro en oBrw:Report() que mencioné, siguiendo la explicación del amigo G.N. Rao, y funciona perfecto, bien puede ir el número de la columna o el nombre de la columna así: {oBrw:nombrecolumna}, y el reporte se imprime por grupos y totalizado. La columna debe estar previamente ordenada.
Ahora sólo hace falta preguntarle a Rubén si usa XBrowse y le satisface la solución.
Saludos
Marcelo Jingo
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 3:53 pm
by ruben Dario
Si tambien Uso xbrowse, ME gustaria si me puedes mostar un codigo completo para analizarlo con xbrowse y report.
Este es el codigo de report que tengo pero me funciona para DBF pero no Con ADO, manejo Mysql.
Code: Select all | Expand
REPORT oReport ;
TITLE "REGISTRO REFERENCIAS ",;
OemtoAnsi("");
FONT oFon1,;
oFon2,;
oFon3 ;
PEN oPen1,;
oPen2 ;
HEADER " Fecha : "+dtoc(date()),;
"Hora : "+time(),;
"Pagina: "+strzero(oReport:nPage,3),;
memvar->X_TPAQU;
RIGHT ;
FOOTER OemtoAnsi(memvar->X_SIGLA );
PREVIEW //TO DEVICE oPrn PREVIEW
COLUMN TITLE "Sta","Item" DATA {||iif(oDatos:Fields("status"):Value=1,"Si","No")}, oDatos:Fields("consec"):Value ;
FONT 1 SIZE 6 //SHADOW GRID 1 hace la raya vertical
COLUMN TITLE "Item","Codprod" DATA oDatos:Fields("consec"):Value,oDatos:Fields("codprod"):Value;
FONT 1 SIZE 12 //SHADOW GRID 1 hace la raya vertical
COLUMN TITLE "Referencia","Simbolo" DATA oDatos:Fields("simbolo"):Value,oDatos:Fields("referencia"):Value;
FONT 1 SIZE 20 //SHADOW GRID 1 hace la raya vertical
COLUMN TITLE "Largo/Alt","Ancho.B.Menor" DATA oDatos:Fields("largo"):Value, ;
oDatos:Fields("ancho"):Value FONT 1 SIZE 8
COLUMN TITLE "Ancho/B.Menor","Solapa" DATA TRANSFORM(oDatos:Fields("ancho_m"):Value,"999.99") ,;
TRANSFORM(oDatos:Fields("solapa"):Value,"999.99") FONT 1 SIZE 10
COLUMN TITLE "Fuelle.F","Fuelle.L" DATA TRANSFORM(oDatos:Fields("fuel_f"):Value,"999.99"), ;
TRANSFORM(oDatos:Fields("fuel_l"):Value,"999.99") FONT 1 SIZE 6
COLUMN TITLE "Metros","Peso/Mil" DATA TRANSFORM(oDatos:Fields("metros"):Value,"999.99"), ;
TRANSFORM(oDatos:Fields("kilmil"):Value,"99.9999") FONT 1 SIZE 6
GROUP ON oDatos:Fields("codprov"):Value
END REPORT
oReport:bSkip := { || (nLinea++, oDatos:MoveNext())}
endif
ACTIVATE REPORT oReport ON ENDPAGE oReport:lPageTotal:= .f. ;
ON STARTGROUP( oReport:NewLine(),;
oReport:EndLine(),;
oReport:Say(0,"CLIENTE : " +codprov+"-"+ALLTRIM(codprov),4,,oReport:nRow),;
oReport:NewLine(),;
oReport:EndLine() )
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 4:45 pm
by sjingo
Ruben Darío
Code: Select all | Expand
ntotal:=0
aoControl[1] := TXBrowse():New( oWdestino )
aoControl[1]:nleft:=columna
aoControl[1]:ntop:=fila
aoControl[1]:nright:=300
aoControl[1]:lFooter := .t.
aoControl[1]:SetAdo(oRs,,.t.) //activa la autoordenacion
aoControl[1]:CreateFromCode()
aoControl[1]:acols[7]:lTotal := .t. //para totalizar cols a report y/o excel
aoControl[1]:acols[7]:bFooter = {|| TRANSFORM(nTotal,"9,999,999,999.99") }
aoControl[1]:acols[7]:nFootStrAlign := 1
Por cada cambio en los valores del total se debe actualizarlo con una función propia para que refresque la variable ntotal.
Para el reporte simplemente desde un boton ejecuto el metodo ::report(), indicando en el ultimo parametro la columna por que se va a realizar el group.
Code: Select all | Expand
aoControl[1]:Report("Consumo por Tipo de Combustible ",,,,{7})
Eso es todo. Yo uso FW904
Saludos
Marcelo Jingo
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 5:36 pm
by ruben Dario
Marcelo
aoControl[1]:Report("Consumo por Tipo de Combustible ",,,,{aoControl7})
o Ques es ... ",,,,{aoControl7})
en este caso {aoControl})
Te Pregunto como lo Hace a Excel
Ceo Que GROUP es totalizar mas o menos el Ejemplo
Lo Que quiero Hacer es generar un Reporte y Hacer Rompimiento por Cliente Utlizando ADO.
En Report Existe esta Funcion GROUP ON
Tu lo has Manejado de estra manera. Peron COn ADO porque con DBF si me funciona
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 6:08 pm
by sjingo
Ups, perdon
es
aoControl[1]:Report("Consumo por Tipo de Combustible ",,,,{7})
es decir el numero de columna por el que se va ha realizar el group
Marcelo Jingo
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 6:27 pm
by ruben Dario
Me Imagino que desde ahi lo puedes pasar a Excel
Re: Ayuda con Un Ejemplo Report Con ADO y GROUP
Posted: Wed Mar 10, 2010 8:28 pm
by sjingo
En teoría debería ser así, porque XBrowse tiene el método toExcel(). Lo acabo de probar haciendo:
oBrw:ToExcel()
Pero obtengo el error
Error description: Error 1853788/0 S_OK: _FORMULAR1C1
Args:
[ 1] = C =SUBTOTALES(9;R2C9:R6C9
Debe ser algun problema al generar la fórmula de sumatoria. A lo mejor Antonio L. pueda indicar la causa.
De todas formas personalmente para pasar a Excel prefiero usar mi propio código, pero de poder se puede.
Saludos
Marcelo Jingo