graficos estilos tortas.
- goosfancito
- Posts: 1392
- Joined: Fri Oct 07, 2005 7:08 pm
graficos estilos tortas.
hola.
necesito generar e imprimir (sin excel) graficos tipo torta.
Que puedo usar?
gracias.
necesito generar e imprimir (sin excel) graficos tipo torta.
Que puedo usar?
gracias.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Re: graficos estilos tortas.
Puedes usar la clase TGraph
Ejemplo:
En el recurso debes poner el Style en "TGRAPH"
Ejemplo:
Code: Select all
#Include "FiveWin.Ch"
#Include "TGraph.Ch"
DEFINE DIALOG oDlg RESOURCE "GRAFICA" OF oWnd
oDlg:lHelpIcon := .f.
REDEFINE GRAPH oGraf OF oDlg ID 111 TITLE "Ventas por rubros" 3D XGRID;
YGRID XVALUES YVALUES LEGENDS TYPE 4
oGraf:cTitle := "Ventas x rubros"
oGraf:cSubTit:= "En pesos"
oGraf:cTitX := "Valores"
oGraf:cTitY := "Rubro"
oGraf:lPopUp := .T.
FOR j := 1 TO 10
aRubro := {j}
oGraf:AddSerie(aRubro,"Rubro "+STR(j,2), RGB(nRandom(255),nRandom(255),nRandom(255)))
NEXT j
oGraf:Refresh()
REDEFINE BUTTON oBot2 ID 104 OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
- goosfancito
- Posts: 1392
- Joined: Fri Oct 07, 2005 7:08 pm
Re: graficos estilos tortas.
Este control estoy viendo segun la clase que hay problemas al imprimir en los xp, y por las pruebas que hice los graficos no se ven bien (no en el aspecto) sino que en el tipo "pie" para mi "torta" no terminan de cerrar completamente el circulo.
Gracias.
Gracias.
cmsoft wrote:Puedes usar la clase TGraph
Ejemplo:En el recurso debes poner el Style en "TGRAPH"Code: Select all
#Include "FiveWin.Ch" #Include "TGraph.Ch" DEFINE DIALOG oDlg RESOURCE "GRAFICA" OF oWnd oDlg:lHelpIcon := .f. REDEFINE GRAPH oGraf OF oDlg ID 111 TITLE "Ventas por rubros" 3D XGRID; YGRID XVALUES YVALUES LEGENDS TYPE 4 oGraf:cTitle := "Ventas x rubros" oGraf:cSubTit:= "En pesos" oGraf:cTitX := "Valores" oGraf:cTitY := "Rubro" oGraf:lPopUp := .T. FOR j := 1 TO 10 aRubro := {j} oGraf:AddSerie(aRubro,"Rubro "+STR(j,2), RGB(nRandom(255),nRandom(255),nRandom(255))) NEXT j oGraf:Refresh() REDEFINE BUTTON oBot2 ID 104 OF oDlg ACTION oDlg:End() ACTIVATE DIALOG oDlg CENTER
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: graficos estilos tortas.
RMCHART sin lugar a dudas la mejor opción
Yo tengo un ejecutable que te saca la grafica en varios estilos a partir de un archivo de
texto si te interesa dejame tu correo y te lo envio.
Saludos
Yo tengo un ejecutable que te saca la grafica en varios estilos a partir de un archivo de
texto si te interesa dejame tu correo y te lo envio.
Saludos
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- goosfancito
- Posts: 1392
- Joined: Fri Oct 07, 2005 7:08 pm
Re: graficos estilos tortas.
Enviado
Vladimir Zorrilla wrote:RMCHART sin lugar a dudas la mejor opción
Yo tengo un ejecutable que te saca la grafica en varios estilos a partir de un archivo de
texto si te interesa dejame tu correo y te lo envio.
Saludos
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Re: graficos estilos tortas.
Estimado Sr. Vladimir,
Gracias
Anser
También estoy interesado en tener una copia del programa que usted ha dicho. Mi dirección de correo electrónico está anserkk@gmail.comRMCHART sin lugar a dudas la mejor opción
Yo tengo un ejecutable que te saca la grafica en varios estilos a partir de un archivo de
texto si te interesa dejame tu correo y te lo envio.
Gracias
Anser
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: graficos estilos tortas.
Vladimir, parece muy interesante, me gustaría si pudiera enviármelo también a jmurugosa(arroba)gmail.com, o tal vez colocar un link aquí para que los interesados podamos bajarlo.Vladimir Zorrilla wrote:RMCHART sin lugar a dudas la mejor opción
Yo tengo un ejecutable que te saca la grafica en varios estilos a partir de un archivo de
texto si te interesa dejame tu correo y te lo envio.
Saludos
Gracias desde ya.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: graficos estilos tortas.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: graficos estilos tortas.
Saludos,
Adhemar C.
Adhemar C.
Re: graficos estilos tortas.
Hola Vladimir
Si no es molestia, te agradecere el envio a mi correo es lubin.am@speedy.com.pe , me parece interesante la alternativa que mencionas
Lubin
Si no es molestia, te agradecere el envio a mi correo es lubin.am@speedy.com.pe , me parece interesante la alternativa que mencionas
Lubin
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: graficos estilos tortas.
Amigos
Hace varios dias que no entro a las news por ello no respondi a tiempo esta liga.
RMC.EXE lo hice por que tengo ejecutables en clipper y en diferentes versiones de FW
que requieren graficas y usar RMCHART.dll exige estar en 32 bits y actualizado con las
versiones mas recientes de FWH y XHARBOUR
La idea es simple sus programas en clipper o FW deben crear un archivo de texto llamado
RMC.TXT que sera leido por RMC.EXE que genera una ventana con la grafica y un menu
para cambiar a los estilos del RMCHART.Adicionalmnete deben poner rmchart.dll en la misma
carpeta del ejecutable.
Solo esos 3 archivos y nada mas por que no usamos la version en ocx del rmchart que exige
registro de sistema.
Esos archivos estan un correo de yahoo que yo uso para enviar cosas a mis amigos
Entren como si fuera su correo y descargen los archivos de ahi , busquen el mensaje
que dice para los amigos del foro de fivetech
Usuario : cps_envios@yahoo.es
Clave : 020369
Aqui os dejo algunos ejemplos de como se crea RMC.txt
RMC.TXT
TYPECHART=SIMPLELINE
CAPTION=Importaciones por Pais Origen ABRIL 2008
XMINVALUE=0
XMAXVALUE=500
XTICKCOUNT=5
XSUNIT=
XSTEXT=Nº Despachos
YLABEL=AR*BR*CA*CH*CN*CO*CZ*DE*ES*FR*GB*HU*IN*IS*IT*JP*KR*MX*MY*PR*SG*TH*TR*TW*US
YSTEXT=Paises
YTICKCOUNT=25
BARSERIES=2,22,1,9,403,4,15,34,9,5,4,1,18,1,12,12,50,4,3,1,1,2,2,4,68
Aqui os explico
Tipo de Grafica inicial
TYPECHART=SIMPLELINE
Titulo de la Grafica
CAPTION=Importaciones por Pais Origen ABRIL 2008
Valores del eje x
XMINVALUE=0
XMAXVALUE=500
XTICKCOUNT=5
XSUNIT=
XSTEXT=Nº Despachos
Valores del eje Y
YLABEL=AR*BR*CA*CH*CN*CO*CZ*DE*ES*FR*GB*HU*IN*IS*IT*JP*KR*MX*MY*PR*SG*TH*TR*TW*US
YSTEXT=Paises
YTICKCOUNT=25
Datos de la grafica
BARSERIES=2,22,1,9,403,4,15,34,9,5,4,1,18,1,12,12,50,4,3,1,1,2,2,4,68
Por ejemplo asi seria su programa
Func gpaisRM
Local j,dplan:={},mplan:={},nombre:={},n,T:="",sLabels:="",k,cadbar:=""
Local mes:="4"//LTRIM(STR(VAL(ZZZMES(_VG("GPAIS_1")) )))
local cmd,CMD_:="SELECT SEA"+XCOD()+".PAIS_ORIGE,TA141.DESCRI,DGA"+XCOD()+".FCHNUMER FROM SEA"+XCOD()+" LEFT JOIN DGA"+XCOD()+" ON SEA"+XCOD()+".NUME_ORDEN=DGA"+XCOD()+".NUME_ORDEN LEFT JOIN TA141 ON SEA"+XCOD()+".PAIS_ORIGE=TA141.CODIGO WHERE YEAR(DGA"+XCOD()+".FCHNUMER)="+_VG("A20_19")+" AND MONTH(DGA"+XCOD()+".FCHNUMER)="+mes+" AND SEA"+XCOD()+".CODI_REGI='10'"
cmd_+=" ORDER BY SEA"+XCOD()+".PAIS_ORIGE"
VZ2QUERY(@cmd,CMD_)
For j=1 to cmd:nRowCount
cmd:Goto(j);cmd:Load()
IF (n:=ASCAN(mplan,cmd:FldGet(1)))=0
aadd(dplan,1 )
aadd(mplan,cmd:FldGet(1) )
aadd(nombre,subs(cmd:FldGet(2),1,15) )
sLabels+=cmd:FldGet(1)+"*"
ELSE
dplan[n]:=dplan[n]+1
ENDIF
Next j
sLabels:=subs(sLabels,1,len(sLabels)-1)
For k=1 to len(dplan)
if k=len(dplan)
cadbar+=ltrim(str(dplan[k]))
else
cadbar+=ltrim(str(dplan[k]))+","
endif
next k
T+="TYPECHART=SIMPLEBAR"+H()
T+="CAPTION=Importaciones por Pais Origen ABRIL "+ALLTRIM(_VG("A20_19"))+H()
T+="XMINVALUE=0"+H()
T+="XMAXVALUE=500"+H()
T+="XTICKCOUNT=5"+H()
T+="XSUNIT= "+H()
T+="XSTEXT=Nº Despachos "+h()
T+="YLABEL="+sLabels+H()
T+="YSTEXT=Paises "+h()
T+="YTICKCOUNT="+LTRIM(STR(len(dplan)))+H()
T+="BARSERIES="+cadbar+H()
MEMOWRIT("RMC.TXT",T)
cmd:Close()
winexec("RMC")
retu .t.
Function h
retu(chr(13)+chr(10))
*****************************************************
T+="TYPECHART=SIMPLEBAR"+H()
Otra cosa los valores del TYPE CHART que pueden variar para
la grafica inicial son
SIMPLEBAR
PIE
DONUT
PYRAMID
HORIZONTALBAR
SIMPLELINE
GROUPBAR
BARSLINES
y dentro con el menu pueden cambiar a todas esas graficas
y se puede imprimir y copiar al portapapeles
***************************************************************************************
*** MAS EJEMPLOS
****************************************************************************************
/////////////// FUENTE DE LAS GRAFICAS DEL MATRICSOFT ////////////////////
FUNC GRAFHM // COMPARATIVA ENTRE HOMBRE SY MUJERES POR OFERTA EDUCARTIVA SEPRADO POR CARRERA
LOCAL cmd:="",oHom,oMuj,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="LEFT JOIN alumnos ON alumnos.codigo=matricula.cod_alum "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND alumnos._='M' "
cmd+="GROUP BY COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oHom,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oHom:nRowCount
oHom:Goto(j);oHom:Load()
IF VALTYPE(oHom:FldGet(1))="N"
BARSERIES+=ltrim(str(oHom:FldGet(1)))+if(j=oHom:nRowCount,"",",")
else
BARSERIES+=oHom:FldGet(1)+if(j=oHom:nRowCount,"",",")
ENDIF
IF VAL(oHom:FldGet(1))>MAXVALO
MAXVALO:=VAL(oHom:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="LEFT JOIN alumnos ON alumnos.codigo=matricula.cod_alum "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND alumnos._='F' "
cmd+="GROUP BY COD_CAR "
vz2Query(@oMuj,cmd)
For j=1 to oMuj:nRowCount
oMuj:Goto(j);oMuj:Load()
IF VALTYPE(oMuj:FldGet(1))="N"
BARSERIES2+=ltrim(str(oMuj:FldGet(1)))+if(j=oMuj:nRowCount,"",",")
else
BARSERIES2+=oMuj:FldGet(1)+if(j=oMuj:nRowCount,"",",")
ENDIF
IF VAL(oHom:FldGet(1))>MAXVALO
MAXVALO:=VAL(oHom:FldGet(1))
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
//MSGALERT(MAXVALO,"MAXVALO "+VALTYPE(MAXVALO))
TXT+="TYPECHART=HORIZONTALBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H() //200"+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº Alumnos"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Hombres*Mujeres"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
FUNC GRAFMR // COMPARATIVA MATRICULADO Y RETIRADOS
LOCAL cmd:="",oMat,oAct,oRet,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",BARSERIES3:="BARSERIES3=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oMat,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oMat:nRowCount
oMat:Goto(j);oMat:Load()
IF VALTYPE(oMat:FldGet(1))="N"
BARSERIES+=ltrim(str(oMat:FldGet(1)))+if(j=oMat:nRowCount,"",",")
else
BARSERIES+=oMat:FldGet(1)+if(j=oMat:nRowCount,"",",")
ENDIF
IF VAL(oMat:FldGet(1))>MAXVALO
MAXVALO:=VAL(oMat:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND matricula.BAJA='SI' "
cmd+="GROUP BY COD_CAR "
vz2Query(@oRet,cmd)
For j=1 to oRet:nRowCount
oRet:Goto(j);oRet:Load()
IF VALTYPE(oRet:FldGet(1))="N"
BARSERIES2+=ltrim(str(oRet:FldGet(1)))+if(j=oRet:nRowCount,"",",")
else
BARSERIES2+=oRet:FldGet(1)+if(j=oRet:nRowCount,"",",")
ENDIF
IF VAL(oRet:FldGet(1))>MAXVALO
MAXVALO:=VAL(oRet:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="INNER JOIN asiscur on matricula.cod_alum=asiscur.cod_alum "
cmd+="WHERE matricula.PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY matricula.COD_CAR "
vz2Query(@oAct,cmd)
For j=1 to oAct:nRowCount
oAct:Goto(j);oAct:Load()
IF VALTYPE(oAct:FldGet(1))="N"
BARSERIES3+=ltrim(str(oAct:FldGet(1)))+if(j=oAct:nRowCount,"",",")
else
BARSERIES3+=oAct:FldGet(1)+if(j=oAct:nRowCount,"",",")
ENDIF
IF VAL(oAct:FldGet(1))>MAXVALO
MAXVALO:=VAL(oAct:FldGet(1))
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
TXT+="TYPECHART=HORIZONTALBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+ltrim(str(maxvalo))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº Alumnos"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+=BARSERIES3+h()
TXT+="LEGEND=Matriculados*Retirados*Activos"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
FUNC GRAFATF // COMPARATIVA ASISTENCUA TARDANZAS Y FALTAS
LOCAL cmd:="",oMat,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",BARSERIES3:="BARSERIES3=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT SUM(ASISTENCIA),SUM(TARDANZA),SUM(FALTAS) FROM asiscur "
cmd+="WHERE asiscur.PERIODO='"+PERIODO()+"' AND asiscur.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY asiscur.COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oMat,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oMat:nRowCount
oMat:Goto(j);oMat:Load()
BARSERIES+=ltrim(str(oMat:FldGet(1)))+if(j=oMat:nRowCount,"",",")
BARSERIES2+=ltrim(str(oMat:FldGet(2)))+if(j=oMat:nRowCount,"",",")
BARSERIES3+=ltrim(str(oMat:FldGet(3)))+if(j=oMat:nRowCount,"",",")
IF oMat:FldGet(1)>MAXVALO
MAXVALO=oMat:FldGet(1)
ENDIF
IF oMat:FldGet(2)>MAXVALO
MAXVALO=oMat:FldGet(2)
ENDIF
IF oMat:FldGet(3)>MAXVALO
MAXVALO=oMat:FldGet(3)
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+ltrim(str(maxvalo))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº veces"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+=BARSERIES3+h()
TXT+="LEGEND=Asistencias*Tardanzas*Faltas"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
/// FLUJOGRAMA DE PAGO DE PENSIONES EMITIDOS VZ COBRADOS
FUNC GRAFFLUJO
LOCAL TXT:="",J,CMD:="",o
LOCAL YLABEL:="YLABEL="
LOCAL BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",MAXVALO:=0
cmd+="SELECT MES,SUM(DEBE),SUM(HABER) FROM "+ASHIS2()+" "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND PAIS_ORIGE='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY MES "
//MSGGET(,,@CMD)
vz2Query(@o,cmd )
For j=1 to o:nRowCount
o:Goto(j);o:Load(j)
YLABEL+=cccmes(VAL(o:FldGet(1)))+if(j=o:nRowCount,"","*")
BARSERIES+=ltrim(str(o:FldGet(2)))+if(j=o:nRowCount,"",",")
BARSERIES2+=ltrim(str(o:FldGet(3)))+if(j=o:nRowCount,"",",")
if o:FldGet(2)>MAXVALO
MAXVALO=o:FldGet(2)
endif
if o:FldGet(3)>MAXVALO
MAXVALO=o:FldGet(3)
endif
Next j
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=FLUJOGRAMA DE PAGO DE PENSIONES "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT=S/."+H()
TXT+="XSTEXT=Importes Emitidos"+H()
TXT+="XSUNIT2=S/."+H()
TXT+="XSTEXT2=Importes Cobrados"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=MESES"+h()
TXT+="YTICKCOUNT="+ltrim(str(o:nRowCount))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Emitido*Cobrado"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
/// grafica del flujo de caja por fechas INGRESOS VZ GASYOS POR DIA
Func grafrubro
LOCAL TXT:="",J,CMD:="",o
LOCAL YLABEL:="YLABEL="
LOCAL BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",MAXVALO:=0
cmd+="SELECT fchnumer,sum(debe),sum(haber) FROM "+ashis2()+" "
cmd+="WHERE CUENTA='"+CTA10()+"' AND (FCHNUMER>='"+DTOMY(_vg("RCRU_3"))+"' AND FCHNUMER<='"+DTOMY(_vg("RCRU_5"))+"' ) "
cmd+="GROUP BY FCHNUMER"
vz2Query(@o,cmd )
For j=1 to o:nRowCount
o:Goto(j);o:Load(j)
YLABEL+=dtoc(o:FldGet(1))+if(j=o:nRowCount,"","*")
BARSERIES+=ltrim(str(o:FldGet(2)))+if(j=o:nRowCount,"",",")
BARSERIES2+=ltrim(str(o:FldGet(3)))+if(j=o:nRowCount,"",",")
IF o:FldGet(2)>MAXVALO
MAXVALO:=o:FldGet(2)
ENDIF
IF o:FldGet(3)>MAXVALO
MAXVALO:=o:FldGet(3)
ENDIF
Next j
MSGALERT( MAXVALO,"MAXVALO")
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=FLUJOGRAMA DE INGRESOS Y GASTOS POR DIA "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT=S/."+H()
TXT+="XSTEXT=Ingresos"+H()
TXT+="XSUNIT2=S/."+H()
TXT+="XSTEXT2=Salidas"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=DIAS"+h()
TXT+="YTICKCOUNT="+ltrim(str(o:nRowCount))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Ingresos*Salidas"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
Espero les sea de utilidad
Saludos
Hace varios dias que no entro a las news por ello no respondi a tiempo esta liga.
RMC.EXE lo hice por que tengo ejecutables en clipper y en diferentes versiones de FW
que requieren graficas y usar RMCHART.dll exige estar en 32 bits y actualizado con las
versiones mas recientes de FWH y XHARBOUR
La idea es simple sus programas en clipper o FW deben crear un archivo de texto llamado
RMC.TXT que sera leido por RMC.EXE que genera una ventana con la grafica y un menu
para cambiar a los estilos del RMCHART.Adicionalmnete deben poner rmchart.dll en la misma
carpeta del ejecutable.
Solo esos 3 archivos y nada mas por que no usamos la version en ocx del rmchart que exige
registro de sistema.
Esos archivos estan un correo de yahoo que yo uso para enviar cosas a mis amigos
Entren como si fuera su correo y descargen los archivos de ahi , busquen el mensaje
que dice para los amigos del foro de fivetech
Usuario : cps_envios@yahoo.es
Clave : 020369
Aqui os dejo algunos ejemplos de como se crea RMC.txt
RMC.TXT
TYPECHART=SIMPLELINE
CAPTION=Importaciones por Pais Origen ABRIL 2008
XMINVALUE=0
XMAXVALUE=500
XTICKCOUNT=5
XSUNIT=
XSTEXT=Nº Despachos
YLABEL=AR*BR*CA*CH*CN*CO*CZ*DE*ES*FR*GB*HU*IN*IS*IT*JP*KR*MX*MY*PR*SG*TH*TR*TW*US
YSTEXT=Paises
YTICKCOUNT=25
BARSERIES=2,22,1,9,403,4,15,34,9,5,4,1,18,1,12,12,50,4,3,1,1,2,2,4,68
Aqui os explico
Tipo de Grafica inicial
TYPECHART=SIMPLELINE
Titulo de la Grafica
CAPTION=Importaciones por Pais Origen ABRIL 2008
Valores del eje x
XMINVALUE=0
XMAXVALUE=500
XTICKCOUNT=5
XSUNIT=
XSTEXT=Nº Despachos
Valores del eje Y
YLABEL=AR*BR*CA*CH*CN*CO*CZ*DE*ES*FR*GB*HU*IN*IS*IT*JP*KR*MX*MY*PR*SG*TH*TR*TW*US
YSTEXT=Paises
YTICKCOUNT=25
Datos de la grafica
BARSERIES=2,22,1,9,403,4,15,34,9,5,4,1,18,1,12,12,50,4,3,1,1,2,2,4,68
Por ejemplo asi seria su programa
Func gpaisRM
Local j,dplan:={},mplan:={},nombre:={},n,T:="",sLabels:="",k,cadbar:=""
Local mes:="4"//LTRIM(STR(VAL(ZZZMES(_VG("GPAIS_1")) )))
local cmd,CMD_:="SELECT SEA"+XCOD()+".PAIS_ORIGE,TA141.DESCRI,DGA"+XCOD()+".FCHNUMER FROM SEA"+XCOD()+" LEFT JOIN DGA"+XCOD()+" ON SEA"+XCOD()+".NUME_ORDEN=DGA"+XCOD()+".NUME_ORDEN LEFT JOIN TA141 ON SEA"+XCOD()+".PAIS_ORIGE=TA141.CODIGO WHERE YEAR(DGA"+XCOD()+".FCHNUMER)="+_VG("A20_19")+" AND MONTH(DGA"+XCOD()+".FCHNUMER)="+mes+" AND SEA"+XCOD()+".CODI_REGI='10'"
cmd_+=" ORDER BY SEA"+XCOD()+".PAIS_ORIGE"
VZ2QUERY(@cmd,CMD_)
For j=1 to cmd:nRowCount
cmd:Goto(j);cmd:Load()
IF (n:=ASCAN(mplan,cmd:FldGet(1)))=0
aadd(dplan,1 )
aadd(mplan,cmd:FldGet(1) )
aadd(nombre,subs(cmd:FldGet(2),1,15) )
sLabels+=cmd:FldGet(1)+"*"
ELSE
dplan[n]:=dplan[n]+1
ENDIF
Next j
sLabels:=subs(sLabels,1,len(sLabels)-1)
For k=1 to len(dplan)
if k=len(dplan)
cadbar+=ltrim(str(dplan[k]))
else
cadbar+=ltrim(str(dplan[k]))+","
endif
next k
T+="TYPECHART=SIMPLEBAR"+H()
T+="CAPTION=Importaciones por Pais Origen ABRIL "+ALLTRIM(_VG("A20_19"))+H()
T+="XMINVALUE=0"+H()
T+="XMAXVALUE=500"+H()
T+="XTICKCOUNT=5"+H()
T+="XSUNIT= "+H()
T+="XSTEXT=Nº Despachos "+h()
T+="YLABEL="+sLabels+H()
T+="YSTEXT=Paises "+h()
T+="YTICKCOUNT="+LTRIM(STR(len(dplan)))+H()
T+="BARSERIES="+cadbar+H()
MEMOWRIT("RMC.TXT",T)
cmd:Close()
winexec("RMC")
retu .t.
Function h
retu(chr(13)+chr(10))
*****************************************************
T+="TYPECHART=SIMPLEBAR"+H()
Otra cosa los valores del TYPE CHART que pueden variar para
la grafica inicial son
SIMPLEBAR
PIE
DONUT
PYRAMID
HORIZONTALBAR
SIMPLELINE
GROUPBAR
BARSLINES
y dentro con el menu pueden cambiar a todas esas graficas
y se puede imprimir y copiar al portapapeles
***************************************************************************************
*** MAS EJEMPLOS
****************************************************************************************
/////////////// FUENTE DE LAS GRAFICAS DEL MATRICSOFT ////////////////////
FUNC GRAFHM // COMPARATIVA ENTRE HOMBRE SY MUJERES POR OFERTA EDUCARTIVA SEPRADO POR CARRERA
LOCAL cmd:="",oHom,oMuj,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="LEFT JOIN alumnos ON alumnos.codigo=matricula.cod_alum "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND alumnos._='M' "
cmd+="GROUP BY COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oHom,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oHom:nRowCount
oHom:Goto(j);oHom:Load()
IF VALTYPE(oHom:FldGet(1))="N"
BARSERIES+=ltrim(str(oHom:FldGet(1)))+if(j=oHom:nRowCount,"",",")
else
BARSERIES+=oHom:FldGet(1)+if(j=oHom:nRowCount,"",",")
ENDIF
IF VAL(oHom:FldGet(1))>MAXVALO
MAXVALO:=VAL(oHom:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="LEFT JOIN alumnos ON alumnos.codigo=matricula.cod_alum "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND alumnos._='F' "
cmd+="GROUP BY COD_CAR "
vz2Query(@oMuj,cmd)
For j=1 to oMuj:nRowCount
oMuj:Goto(j);oMuj:Load()
IF VALTYPE(oMuj:FldGet(1))="N"
BARSERIES2+=ltrim(str(oMuj:FldGet(1)))+if(j=oMuj:nRowCount,"",",")
else
BARSERIES2+=oMuj:FldGet(1)+if(j=oMuj:nRowCount,"",",")
ENDIF
IF VAL(oHom:FldGet(1))>MAXVALO
MAXVALO:=VAL(oHom:FldGet(1))
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
//MSGALERT(MAXVALO,"MAXVALO "+VALTYPE(MAXVALO))
TXT+="TYPECHART=HORIZONTALBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H() //200"+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº Alumnos"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Hombres*Mujeres"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
FUNC GRAFMR // COMPARATIVA MATRICULADO Y RETIRADOS
LOCAL cmd:="",oMat,oAct,oRet,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",BARSERIES3:="BARSERIES3=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oMat,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oMat:nRowCount
oMat:Goto(j);oMat:Load()
IF VALTYPE(oMat:FldGet(1))="N"
BARSERIES+=ltrim(str(oMat:FldGet(1)))+if(j=oMat:nRowCount,"",",")
else
BARSERIES+=oMat:FldGet(1)+if(j=oMat:nRowCount,"",",")
ENDIF
IF VAL(oMat:FldGet(1))>MAXVALO
MAXVALO:=VAL(oMat:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' AND matricula.BAJA='SI' "
cmd+="GROUP BY COD_CAR "
vz2Query(@oRet,cmd)
For j=1 to oRet:nRowCount
oRet:Goto(j);oRet:Load()
IF VALTYPE(oRet:FldGet(1))="N"
BARSERIES2+=ltrim(str(oRet:FldGet(1)))+if(j=oRet:nRowCount,"",",")
else
BARSERIES2+=oRet:FldGet(1)+if(j=oRet:nRowCount,"",",")
ENDIF
IF VAL(oRet:FldGet(1))>MAXVALO
MAXVALO:=VAL(oRet:FldGet(1))
ENDIF
Next j
cmd:=""
cmd+="SELECT COUNT(*) FROM matricula "
cmd+="INNER JOIN asiscur on matricula.cod_alum=asiscur.cod_alum "
cmd+="WHERE matricula.PERIODO='"+PERIODO()+"' AND matricula.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY matricula.COD_CAR "
vz2Query(@oAct,cmd)
For j=1 to oAct:nRowCount
oAct:Goto(j);oAct:Load()
IF VALTYPE(oAct:FldGet(1))="N"
BARSERIES3+=ltrim(str(oAct:FldGet(1)))+if(j=oAct:nRowCount,"",",")
else
BARSERIES3+=oAct:FldGet(1)+if(j=oAct:nRowCount,"",",")
ENDIF
IF VAL(oAct:FldGet(1))>MAXVALO
MAXVALO:=VAL(oAct:FldGet(1))
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
TXT+="TYPECHART=HORIZONTALBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+ltrim(str(maxvalo))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº Alumnos"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+=BARSERIES3+h()
TXT+="LEGEND=Matriculados*Retirados*Activos"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
FUNC GRAFATF // COMPARATIVA ASISTENCUA TARDANZAS Y FALTAS
LOCAL cmd:="",oMat,j,BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",BARSERIES3:="BARSERIES3=",YLABEL:="YLABEL=",oCarr
LOCAL TXT:="",MAXVALO:=0
cmd+="SELECT CARRERA FROM carreras ORDER BY COD_CAR"
vz2Query(@oCarr,cmd )
For j=1 to oCarr:nRowCount
oCarr:Goto(j);oCarr:Load()
YLABEL+=alltrim(oCarr:FldGet(1))+if(j=oCarr:nRowCount,"","*")
Next j
cmd:=""
cmd+="SELECT SUM(ASISTENCIA),SUM(TARDANZA),SUM(FALTAS) FROM asiscur "
cmd+="WHERE asiscur.PERIODO='"+PERIODO()+"' AND asiscur.TIPO_CAR='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY asiscur.COD_CAR "
//MSGGET(,,CMD)
vz2Query(@oMat,cmd)
//MSGALERT("Cuantros hombres hay "+ltrim(str(oHom:nRowCount)))
For j=1 to oMat:nRowCount
oMat:Goto(j);oMat:Load()
BARSERIES+=ltrim(str(oMat:FldGet(1)))+if(j=oMat:nRowCount,"",",")
BARSERIES2+=ltrim(str(oMat:FldGet(2)))+if(j=oMat:nRowCount,"",",")
BARSERIES3+=ltrim(str(oMat:FldGet(3)))+if(j=oMat:nRowCount,"",",")
IF oMat:FldGet(1)>MAXVALO
MAXVALO=oMat:FldGet(1)
ENDIF
IF oMat:FldGet(2)>MAXVALO
MAXVALO=oMat:FldGet(2)
ENDIF
IF oMat:FldGet(3)>MAXVALO
MAXVALO=oMat:FldGet(3)
ENDIF
Next j
//MSGALERT("Cuantas mujeres hay "+ltrim(str(oMuj:nRowCount)) )
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=Alumnos de "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+ltrim(str(maxvalo))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT="+H()
TXT+="XSTEXT=Nº veces"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=AÑOS DE ESTUDIOS"+h()
TXT+="YTICKCOUNT="+ltrim(str( oCarr:nRowCount ))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+=BARSERIES3+h()
TXT+="LEGEND=Asistencias*Tardanzas*Faltas"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
/// FLUJOGRAMA DE PAGO DE PENSIONES EMITIDOS VZ COBRADOS
FUNC GRAFFLUJO
LOCAL TXT:="",J,CMD:="",o
LOCAL YLABEL:="YLABEL="
LOCAL BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",MAXVALO:=0
cmd+="SELECT MES,SUM(DEBE),SUM(HABER) FROM "+ASHIS2()+" "
cmd+="WHERE PERIODO='"+PERIODO()+"' AND PAIS_ORIGE='"+SUBS(OFERTAEDUCATIVA(),1,2)+"' "
cmd+="GROUP BY MES "
//MSGGET(,,@CMD)
vz2Query(@o,cmd )
For j=1 to o:nRowCount
o:Goto(j);o:Load(j)
YLABEL+=cccmes(VAL(o:FldGet(1)))+if(j=o:nRowCount,"","*")
BARSERIES+=ltrim(str(o:FldGet(2)))+if(j=o:nRowCount,"",",")
BARSERIES2+=ltrim(str(o:FldGet(3)))+if(j=o:nRowCount,"",",")
if o:FldGet(2)>MAXVALO
MAXVALO=o:FldGet(2)
endif
if o:FldGet(3)>MAXVALO
MAXVALO=o:FldGet(3)
endif
Next j
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=FLUJOGRAMA DE PAGO DE PENSIONES "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT=S/."+H()
TXT+="XSTEXT=Importes Emitidos"+H()
TXT+="XSUNIT2=S/."+H()
TXT+="XSTEXT2=Importes Cobrados"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=MESES"+h()
TXT+="YTICKCOUNT="+ltrim(str(o:nRowCount))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Emitido*Cobrado"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
/// grafica del flujo de caja por fechas INGRESOS VZ GASYOS POR DIA
Func grafrubro
LOCAL TXT:="",J,CMD:="",o
LOCAL YLABEL:="YLABEL="
LOCAL BARSERIES:="BARSERIES=",BARSERIES2:="BARSERIES2=",MAXVALO:=0
cmd+="SELECT fchnumer,sum(debe),sum(haber) FROM "+ashis2()+" "
cmd+="WHERE CUENTA='"+CTA10()+"' AND (FCHNUMER>='"+DTOMY(_vg("RCRU_3"))+"' AND FCHNUMER<='"+DTOMY(_vg("RCRU_5"))+"' ) "
cmd+="GROUP BY FCHNUMER"
vz2Query(@o,cmd )
For j=1 to o:nRowCount
o:Goto(j);o:Load(j)
YLABEL+=dtoc(o:FldGet(1))+if(j=o:nRowCount,"","*")
BARSERIES+=ltrim(str(o:FldGet(2)))+if(j=o:nRowCount,"",",")
BARSERIES2+=ltrim(str(o:FldGet(3)))+if(j=o:nRowCount,"",",")
IF o:FldGet(2)>MAXVALO
MAXVALO:=o:FldGet(2)
ENDIF
IF o:FldGet(3)>MAXVALO
MAXVALO:=o:FldGet(3)
ENDIF
Next j
MSGALERT( MAXVALO,"MAXVALO")
TXT+="TYPECHART=GROUPBAR"+H()
TXT+="CAPTION=FLUJOGRAMA DE INGRESOS Y GASTOS POR DIA "+OFERTAEDUCATIVA()+" "+PERIODO()+H()
TXT+="XMINVALUE=0"+H()
TXT+="XMAXVALUE="+LTRIM(STR(MAXVALO))+H()
TXT+="XTICKCOUNT=10"+H()
TXT+="XSUNIT=S/."+H()
TXT+="XSTEXT=Ingresos"+H()
TXT+="XSUNIT2=S/."+H()
TXT+="XSTEXT2=Salidas"+H()
TXT+=YLABEL+H()
TXT+="YSTEXT=DIAS"+h()
TXT+="YTICKCOUNT="+ltrim(str(o:nRowCount))+H()
TXT+=BARSERIES+h()
TXT+=BARSERIES2+h()
TXT+="LEGEND=Ingresos*Salidas"+h()
MEMOWRIT("RMC.TXT",TXT)
WINEXEC("RMC.exe")
RETU .T.
Espero les sea de utilidad
Saludos
ME INTERESA FW Y XHB POR SER OPEN SOURCE