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