Como corrijo una grafica?

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

franco
Posts: 877
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: Como corrijo una grafica?

Post by franco »

Endor,
I think I ran into the same problem in a browse.
I got around it with visible .t. and .f.
when i pressed the tab it became visible .f. When I left the browse, tab visible became .t..
With multible choices you may use an option group and make it visible .t. or .f.
Hope this is what you where asking for ............... Franco
All The Best,
Franco
Canada
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Como corrijo una grafica?

Post by Javier Tovar »

No franco, creo que estamos hablando de cosas muy diferentes!

Eso creo! ;)

Saludos
//////////////////////////////////////////////////////////////////////////////////////
No frank, I think we are talking about very different things!

I think so! ;)

greetings
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Como corrijo una grafica?

Post by mol »

The same problem appears when you use IMAGE control. You have to refresh window after changing tab, it should halp, I think
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Como corrijo una grafica?

Post by Javier Tovar »

Hola todos,

Por la necesidad de hacer una gráfica con las cantidades arriba de un millón y menos de 10 millones, hice esta humilde muestra, se que se puede mejorar mucho, pero por tiempo se las comparto así. Es solo de una serie.

El código tampoco esta del todo limpio, pero creo que funciona a pequeñas necesidades.

Saludos
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hello all,

By the need to make a chart with amounts above one million and less than 10 million, made ​​this humble sample, you can improve a lot, but time as well share them. It's just a number.

The code is not completely clean, but I think it works for small needs.

regards
Graph.jpg
Graph.jpg (97.68 KiB) Viewed 2476 times

Code: Select all

#include "hmg.ch"

#define nWIDTH      GetDeskTopWidth()
#define nHEIGHT     GetDeskTopHeight()-40

FUNCTION MAIN
Local cColor := RED

*-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-SOLO ESTO HAY QUE MODIFICAR-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.//
LOCAL nRow       := 10
LOCAL nCol       := 10
LOCAL nW         := 800
LOCAL nH         := 300
LOCAL cTitulo    := "VENTAS POR MES DURANTE 2014"
LOCAL aNombresS  := {"Serie 1"}
*LOCAL aValoresS  := {-114054.57 , -2141184.09 , -146106.72 , -11210.16 , -148153.12 , -140945.27 , -15857.91 ,-180792.10 , -16074.99}
*LOCAL aValoresS  := {-14054.57 , +2141184.09 , -146106.72 , +11210.16 , -148153.12 , +140945.27 , +15857.91 ,-180792.10 , +16074.99}
*LOCAL aValoresS  := {+14054.57 , -2141184.09 , +146106.72 , -11210.16 , +148153.12 , -140945.27 , +15857.91 ,-180792.10 , +16074.99}
LOCAL aValoresS  := {14054.57 , 2141184.09 , 146106.72 , 11210.16 , 148153.12 , 140945.27 , 15857.91 ,180792.10 , 16074.99}
*LOCAL aValoresS    := {1152391.62 , 1145743.14 ,	1222495.43 , 1451246.80 , 1282571.94 , 1251319.02 , 1245945.15 , 1282475.94 , 1293606.78 }
*LOCAL aValoresS  := {1.57 , 2.09 , 3.72 , 4.16 , 5.12 , 6.27 , 7.91 , 8.10 , 9.99}
*LOCAL aValoresS  := {250.57 , 320.09 , 200.72 , 800.16 , 1200.12 , 400.27 , 300.91 ,150.10 , 800.99}
LOCAL aX         := {"ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP"}
LOCAL aColores   := {cColor,cColor,cColor,cColor,cColor,cColor,cColor,cColor,cColor}
LOCAL nWColumn   := 50
LOCAL lLineas    := .T.
LOCAL lMarco     := .T.
*-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.//





LOCAL cFormat := "99,999,999.99"
LOCAL nY         := 0 
LOCAL nVecesY    := 0
LOCAL nVecesP    := 0
LOCAL nVecesN    := 0
LOCAL nRowF      := nRow + nH
LOCAL nColF      := nCol + nW

LOCAL nAnchoVal  := 0
LOCAL lNegativo  := .F.
LOCAL lPositivo  := .F.
LOCAL nValorP    := 0
LOCAL nValorN    := 0
LOCAL nValorM    := 0
LOCAL nAltoP     := 0

LOCAL nRowX := 0
LOCAL nColY := 0

LOCAL nRowG := 0
LOCAL nColG := 0
LOCAL nWG   := 0
LOCAL nHG   := 0

LOCAL nValDiv := 0
LOCAL cLabel  := ""
LOCAL cLabel2 := ""
LOCAL nColYFija := 0
LOCAL nValorY := 0
LOCAL nAncho := 0
LOCAL nValorYN := 0

SET FIXED on
SET DECIMALS TO 6

*LONGITUD DE LOS VALORES
FOR n:= 1 To Len(aValoresS)
	IF Len(AllTrim(STR(aValoresS[n]))) > nAnchoVal
		nAnchoVal := Len(AllTrim(STR(aValoresS[n])))
	ENDIF
NEXT n
*MsgInfo(nAnchoVal)

*AVERIGUAR SI HAY NEGATIVOS Y POSITIVOS
FOR n:= 1 TO Len(aValoresS)
	IF aValoresS[n] < 0
		lNegativo := .T.
	ELSE
		lPositivo := .T.
	ENDIF
Next n 
*----------------------------------------------------------------------------------------------------------------------------------------------------
	IF !lNegativo .and. lPositivo     //Solo +
		*Obtener el Valor Maximo
		FOR n:= 1 TO Len(aValoresS)
				IF(aValoresS[n] > nValorP , nValorP := aValoresS[n] , )
		Next n 

		nValorM := nValorP
		
		nY := ValnY(nValorM)
		
		*Obtener Row de las X y Col de las Y
		nRowX := nRowF         //-30
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200-nColY-30
		nHG   := nRowF-nRow -80

		*MsgInfo(nWG)
		*MsgInfo(nHG)
		nValDiv:= nHG/nValorP
		*nAltoP := nValDiv * aValoresS[1]
		nAltoP := nHG
		nVecesP := Int(nValorP/nY) //Numero de veces que pone los valores en el Eje Y
*		MsgInfo(nVecesP)
	ELSEIF lNegativo .and. !lPositivo //Solo -             *********************************************************************
		*Obtener el Valor Maximo Negativo
		FOR n:= 1 TO Len(aValoresS)
				IF(Abs(aValoresS[n]) > (nValorN) , nValorN := Abs(aValoresS[n]) , )
		Next n 

		*CALCULAR VALOR MAXIMO TOTAL
		nValorM := nValorN
		*MsgInfo(nValorN)
		*MsgInfo(nValorM)
		
		nY := ValnY(nValorM)

		*Obtener Row de las X y Col de las Y
		nRowX := nRow+40
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200  -  nColY-30
		nHG   := nRowF-nRow -80

		*MsgInfo(nWG)
		*	MsgInfo(nHG)
		*	MsgInfo(nValorN)
		nValDiv:= nHG/nValorN
		*	MsgInfo(nValDiv)
		nAltoN := nHG
		nRowX  := nRow+60
		nVecesN := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
	ELSEIF lNegativo .and. lPositivo //Hay +-           ************************************************************
		*Obtener Row de las X y Col de las Y
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200  -  nColY-30
		nHG   := nRowF-nRow -80	
		*MsgInfo(nAnchoVal)
		*OBTENER LOS VALORES MAXIMOS Negativos y Positivos
		FOR n:= 1 TO Len(aValoresS)
			IF aValoresS[n] < 0
		*		MsgBox("Si hay Negativos")
				lNegativo := .T.
				IF(Abs(aValoresS[n]) > nValorN , nValorN := Abs(aValoresS[n]) , )
			ELSE
				IF(aValoresS[n] > nValorP , nValorP := aValoresS[n] , )
				lPositivo := .T.
			ENDIF
		Next n 
		*CALCULAR VALOR MAXIMO TOTAL
		nValorM := nValorP + nValorN

		nY := ValnY(nValorM)
		
		nVecesP := Int(nValorP/nY) //Numero de veces que pone los valores en el Eje Y
		IF( nVecesP = 0 , nVecesP := 1,)
		nVecesN := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
		IF( nVecesN = 0 , nVecesN := 1,)	
		*MsgInfo("Veces valores en Y : " + str(nVecesY))
		*nAltoP := nValDiv * aValoresS[1]
		nAltoN := (nHG * nValorN) / nValorM
		nAltoP := (nHG * nValorP) / nValorM
		nValDiv:= nAltoP/nValorP
		nRowX  := nRowF -nAltoN
*		MsgInfo(nVecesP)
*		MsgInfo(nVecesN)
	ENDIF

	
	IF nValorM < 10
		cFormat := "99.99"
	ELSEIF 	nValorM < 100
		cFormat := "999.99"
	ELSEIF 	nValorM < 1000
		cFormat := "9,999.99"	
	ELSEIF 	nValorM < 10000
		cFormat := "99,999.99"
	ELSEIF 	nValorM < 100000
		cFormat := "9,999,999.99"
	ELSEIF 	nValorM > 1000000
		cFormat := "99,999,999.99"
	ENDIF

	nColY := nColY + 1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	DEFINE WINDOW Main AT 0 , 0 WIDTH nW+100 HEIGHT nH+150 TITLE "GRAPH" MAIN ON INIT NIL //(MsgBox(Main.HEIGHT) , MsgInfo(Main.WIDTH))

		@ nRow+10,nCol LABEL Label_1 VALUE cTitulo WIDTH nRow + nW - 10 HEIGHT 30 FONT 'Arial' SIZE 15 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT CENTERALIGN
		@ nRow+40,nColF-180 LABEL Serie VALUE "- "+aNombresS[1] WIDTH 200 HEIGHT 30 FONT 'Arial' SIZE 10 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT 
		
		IF lMarco		  
			draw line in window Main at nRow,nCol to nRow,nColF pencolor aColores[1] penwidth 1
			draw line in window Main at nRow,nCol to nRowF+50,nCol pencolor aColores[1] penwidth 1
			draw line in window Main at nRow,nColF to nRowF+50,nColF pencolor aColores[1] penwidth 1
			draw line in window Main at nRowF+50,nCol to nRowF+50,nColF pencolor aColores[1] penwidth 1
		ENDIF
				
		IF (!lNegativo .and. lPositivo) //+
			
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor {0,0,0} penwidth 1   //EJE Y
			nColYFija := nColY
			@ nRowX,nColY-10 LABEL Label_2 VALUE "0" CENTERALIGN WIDTH 10 TRANSPARENT TOOLTIP "Label 5 CenterAlign Transparent"   //el "0" entre los ejes
			
			FOR n:= 1 TO Len(aValoresS)  //Valores en las X y Barras
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * aValoresS[n]
				draw rectangle in window Main at nRowX-nAltoP,nColY to nRowX,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]

				@ nRowX,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n
			
			FOR n:= 1 TO nVecesP+1  //Valores en Y y Si se ponen Lineas o no.
				cLabel := "Label_" +StrZero(n,2,0)
				nValorY := nY * n 
				nValorY := nValorY * nValDiv
		*		MsgInfo(nValorY)
				@ nRowX-nValorY-8,nCol+10 LABEL &(cLabel) VALUE Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y		

				IF lLineas
					draw line in window Main at nRowX-nValorY,nColYFija to nRowX-nValorY,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X paralelas
				ENDIF
			Next n	

			IF lNegativo
				*MsgBox("Si Hay Negativos")
				nVecesY := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
				IF (nVecesY = 0,	nVecesY := 1, )
				*MsgInfo(nVecesY)
				FOR n:= 1 TO nVecesY
					cLabel := "Label_" +StrZero(n,4,0)
					nValorY := nY * n 
					nValorY := nValorY * nValDiv
			*		MsgInfo(nValorY)
					@ nRowX+nValorY,nCol+10 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y		
					IF lLineas
						draw line in window Main at nRowX+nValorY,nColYFija to nRowX+nValorY,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X paralelas
					ENDIF
				Next n			
				
			ENDIF
		ELSEIF (lNegativo .and. !lPositivo)	//-
			
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor {0,0,0} penwidth 1   //EJE Y
			nColYFija := nColY
			@ nRowX,nColY-10 LABEL Label_2 VALUE "0" CENTERALIGN WIDTH 10 TRANSPARENT TOOLTIP "Label 5 CenterAlign Transparent"   //el "0" entre los ejes
			
			FOR n:= 1 TO Len(aValoresS)
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * Abs(aValoresS[n])
		*		MsgInfo(nValDiv)
		*		MsgInfo(nAltoP)
				draw rectangle in window Main at nRowX,nColY to nRowX+nAltoP,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]

				@ nRowX-15,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n

			IF lNegativo
				*MsgBox("Si Hay Negativos")
				nVecesY := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
				IF (nVecesY = 0,	nVecesY := 1, )
				*MsgInfo(nVecesY)
				FOR n:= 1 TO nVecesY
					cLabel := "Label_" +StrZero(n,4,0)
					nValorY := nY * n 
					nValorY := nValorY * nValDiv
			*		MsgInfo(nValorY)
					@ nRowX+nValorY-8,nCol+10 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y		
					IF lLineas
						draw line in window Main at nRowX+nValorY,nColYFija to nRowX+nValorY,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X paralelas
					ENDIF
				Next n			
				
			ENDIF

		ELSEIF lNegativo .and. lPositivo	//+-
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor {0,0,0} penwidth 1   //EJE Y
			nColYFija := nColY
			@ nRowX,nColY-10 LABEL Label_2 VALUE "0" CENTERALIGN WIDTH 10 TRANSPARENT TOOLTIP "Label 5 CenterAlign Transparent"   //el "0" entre los ejes
			
			FOR n:= 1 TO Len(aValoresS)  //Valores en las X y Barras
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * aValoresS[n]
				draw rectangle in window Main at nRowX-nAltoP,nColY to nRowX,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]

				@ nRowX,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n

			FOR n:= 1 TO nVecesP //Valores en Y y Si se ponen Lineas o no.
				cLabel := "Label_" +StrZero(n,2,0)
				nValorY := nY * n 
				nValorY := nValorY * nValDiv
		*		MsgInfo(nValorY)
				@ nRowX-nValorY-8,nCol+10 LABEL &(cLabel) VALUE Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y		

				IF lLineas
					draw line in window Main at nRowX-nValorY,nColYFija to nRowX-nValorY,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X paralelas
				ENDIF
			Next n	

			FOR n:= 1 TO nVecesN
				cLabel := "Label_" +StrZero(n,4,0)
				nValorN := nY * n 
				nValorN := nValorN * nValDiv
		*		MsgInfo(nValorN)
				@ nRowX+nValorN-8,nCol+10 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD TOOLTIP "Esto es una gráfica" BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y		
				IF lLineas
					draw line in window Main at nRowX+nValorN,nColYFija to nRowX+nValorN,nColF-200 pencolor {0,0,0} penwidth 1   //EJE X paralelas
				ENDIF
			Next n			
				
		ENDIF
	
	END WINDOW

	Main.ACTIVATE

RETURN NIL

FUNCTION ValnY(nValorM)
LOCAL nValRet
		IF nValorM <= 10
			nValRet := 1
		ELSEIF 	nValorM <= 100
			nValRet := 10
		ELSEIF 	nValorM <= 1000
			nValRet := 100
		ELSEIF 	nValorM <= 5000
			nValRet := 100
		ELSEIF 	nValorM <= 10000
			nValRet := 1000
		ELSEIF 	nValorM <= 500000
			nValRet := 10000
		ELSEIF 	nValorM <= 1000000
			nValRet := 200000
		ELSEIF 	nValorM <= 1500000
			nValRet := 300000
		ELSEIF 	nValorM <= 3000000
			nValRet := 200000			
		ELSEIF 	nValorM <= 5000000
			nValRet := 1000000				
		ELSEIF 	nValorM >= 10000000
			nValRet := 1000000				
		ENDIF
RETURN nValRet		
8-)
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Como corrijo una grafica?

Post by Javier Tovar »

Hola Pablo César, Sr. Rathinagiri y Dr. Claudio Soto,

Quisiera que para la próximo versión de HMG hagan los siguientes cambios en el archivo C:\hmg.3.3.1\SOURCE\Graph\h_Graph.prg en la linea 238 cambiar DEFAULT cPicture := "999,999.99" por DEFAULT cPicture := "99,999,999.99" y en la linea 429-449 cambiar por esto.

Code: Select all

   // xLabels
   nRPos := nRNeg := nZero - nDeep
   FOR nI := 0 TO nXRanges
      IF lxVal
         IF nRange*nI <= nXMax
            cName := "xPVal_Name_"+LTRIM(STR(nI))
            @ nRPos, nLeft-nDeep-70-100 LABEL &cName OF &parent ;
			VALUE Transform(nRange*nI, cPicture) ;
			WIDTH 150 ;
			HEIGHT 14 ;
			FONTCOLOR BLUE FONT "Arial" SIZE 8 TRANSPARENT RIGHTALIGN
         ENDIF
         IF nRange*(-nI) >= nXMin*(-1)
            cName := "xNVal_Name_"+LTRIM(STR(nI))
            @ nRNeg, nLeft-nDeep-70-100 LABEL &cName OF &parent ;
			VALUE Transform(nRange*-nI, cPicture) ;
			WIDTH 150 ;
			HEIGHT 14 ;
			FONTCOLOR BLUE FONT "Arial" SIZE 8 TRANSPARENT RIGHTALIGN
         ENDIF
      ENDIF
Esto con el fin de que se incluyan valores en las gráficas mayores a 999,999.99 espero que sea atendida la solicitud, ya que varias gráficas tienen valores mayores a esa cantidad.

Por su atención muchas gracias! :)

////////////////////////////////////////////////////////////////////////////////////
Hi Pablo Cesar and Mr. Rathinagiri,

I wish for the next version of HMG make the following changes in the C: \ hmg.3.3.1 \ SOURCE \ Graph \ h_Graph.prg [/ b] on line 238 cPicture change DEFAULT: = "999,999.99" by DEFAULT cPicture: = "99,999,999.99" [/ b] and in line 429-449 changed by this.

Code: Select all

   // xLabels
   nRPos := nRNeg := nZero - nDeep
   FOR nI := 0 TO nXRanges
      IF lxVal
         IF nRange*nI <= nXMax
            cName := "xPVal_Name_"+LTRIM(STR(nI))
            @ nRPos, nLeft-nDeep-70-100 LABEL &cName OF &parent ;
			VALUE Transform(nRange*nI, cPicture) ;
			WIDTH 150 ;
			HEIGHT 14 ;
			FONTCOLOR BLUE FONT "Arial" SIZE 8 TRANSPARENT RIGHTALIGN
         ENDIF
         IF nRange*(-nI) >= nXMin*(-1)
            cName := "xNVal_Name_"+LTRIM(STR(nI))
            @ nRNeg, nLeft-nDeep-70-100 LABEL &cName OF &parent ;
			VALUE Transform(nRange*-nI, cPicture) ;
			WIDTH 150 ;
			HEIGHT 14 ;
			FONTCOLOR BLUE FONT "Arial" SIZE 8 TRANSPARENT RIGHTALIGN
         ENDIF
      ENDIF

This in order that values ​​are included in the graphs larger than 999,999.99 I hope the request is treated as several graphs are in excess of that amount.

Thank you very much for your attention! :)
User avatar
LOUIS
Posts: 256
Joined: Tue Dec 11, 2012 9:05 pm
DBs Used: DBF

Re: Como corrijo una grafica?

Post by LOUIS »

Hola Amigos

Estuve revisando algo y me topé con el problema que planteó el Amigo Javier Tovar hace muchos años, respecto a los valores en el gráfico.
A mí se me presentó el mismo problema, así que tomé su código y lo adapté para graficar el Balance General de una Empresa.
Hice unos pequeños cambios, exclusivamente para esta necesidad, ya que sólo se representan 4 Barras.
Les dejo el código y a lo mejor, le puede a alguien servir.
Por mi parte quedo agradecido al Amigo Javier Tovar, ya que esto me ayudó mucho en mi conocimiento.

Saludos

Code: Select all

#include "hmg.ch"
#define nWIDTH      GetDeskTopWidth()
#define nHEIGHT     GetDeskTopHeight()-40

FUNCTION MAIN
*-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-SOLO ESTO HAY QUE MODIFICAR-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.//
LOCAL nRow       := 10
LOCAL nCol       := 10
LOCAL nW         := 800
LOCAL nH         := 300
LOCAL aX         := {"ACTIVO","PASIVO","CAPITAL","PER/GAN"}
LOCAL nWColumn   := 50
LOCAL lLineas    := .T.
LOCAL lMarco     := .T.
*-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.//

LOCAL cFormat := "99,999,999"
LOCAL nY         := 0 
LOCAL nVecesY    := 0
LOCAL nVecesP    := 0
LOCAL nVecesN    := 0
LOCAL nRowF      := nRow + nH
LOCAL nColF      := nCol + nW

LOCAL lNegativo  := .F.
LOCAL lPositivo  := .F.
LOCAL nValorP    := 0
LOCAL nValorN    := 0
LOCAL nValorM    := 0
LOCAL nAltoP     := 0

LOCAL nRowX := 0
LOCAL nColY := 0

LOCAL nRowG := 0
LOCAL nColG := 0
LOCAL nWG   := 0
LOCAL nHG   := 0

LOCAL nValDiv := 0
LOCAL cLabel  := ""
LOCAL cLabel2 := ""
LOCAL nColYFija := 0
LOCAL nValorY := 0
LOCAL nAncho := 0
LOCAL nValorYN := 0

//////////////////////////////////////////////////////////////////
SET CENTURY ON
SET DATE BRIT
SET FIXED on
SET DECIMALS TO 6
SET LANGUAGE TO SPANISH

USE BG						// TOMO VALORES DE LA DBF
SUM ALL VALOR TO ACT FOR SUBSTR(CUENTA,1,1)='1'
SUM ALL VALOR TO PAS FOR SUBSTR(CUENTA,1,1)='2'
SUM ALL VALOR TO CAP FOR SUBSTR(CUENTA,1,1)='3'
GAN = ACT + PAS + CAP
USE

*ACT=ACT*-1		// PARA HACER PRUEBA EN NEGATIVO
PAS=PAS*-1		// PARA QUE GRAFIQUE POSITIVO
CAP=CAP*-1		// PARA QUE GRAFIQUE POSITIVO
*GAN=GAN*-1		// PARA VER EL CAMBIO DE COLOR SI ES POSITIVO O NEGATIVO

nAnchoVal := 0
aValoresS := {ACT,PAS,CAP,GAN}
IF GAN>0
   aColores   := {{128,225,255},{220,125,80},WHITE,BLUE}
 ELSE
   aColores   := {{128,125,255},{100,225,225},WHITE,RED}
ENDIF

CIA='MI EMPRESA LATINA S. A.'

******	LONGITUD DE LOS VALORES	******
FOR n:= 1 To Len(aValoresS)
	IF Len(AllTrim(STR(aValoresS[n]))) > nAnchoVal
		nAnchoVal := Len(AllTrim(STR(aValoresS[n])))
	ENDIF
NEXT n

//////	AVERIGUAR SI HAY NEGATIVOS Y POSITIVOS	//////
FOR n:= 1 TO Len(aValoresS)
	IF aValoresS[n] < 0
		lNegativo := .T.
	ELSE
		lPositivo := .T.
	ENDIF
Next n 
*----------------------------------------------------------------------------------------------------------------------------------------------------
	IF !lNegativo .and. lPositivo			// TODAS LAS COLUMNAS SON POSITIVAS ***************
		*Obtener el Valor Maximo
		FOR n:= 1 TO Len(aValoresS)
			IF(aValoresS[n] > nValorP , nValorP := aValoresS[n] , )
		Next n

		nValorM := nValorP
IF nValorM>9000000
		nY := ValnY(nValorM)
 ELSE
		nY := ValnY2(nValorM)
ENDIF
		*Obtener Row de las X y Col de las Y
		nRowX := nRowF         //-30
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200-nColY-30
		nHG   := nRowF-nRow -80

		*MsgInfo(nWG)
		*MsgInfo(nHG)
		nValDiv:= nHG/nValorP
		*nAltoP := nValDiv * aValoresS[1]
		nAltoP := nHG
*MSGINFO (STR(nValorP))
		nVecesP := Int(nValorP/nY)	// Veces que pone los valores en el Eje Y
*		MsgInfo("CUANTAS VECES "+STR(nVecesP))		// CUANTAS COLUMNAS SON DE GRAFICAR

	ELSEIF lNegativo .and. !lPositivo		// TODAS LAS COLUMNAS SON NEGATIVAS ***************
		*Obtener el Valor Maximo Negativo
		FOR n:= 1 TO Len(aValoresS)
			IF(Abs(aValoresS[n]) > (nValorN) , nValorN := Abs(aValoresS[n]) , )
		Next n 

		*CALCULAR VALOR MAXIMO TOTAL
		nValorM := nValorN
IF nValorM>9000000
		nY := ValnY(nValorM)
 ELSE
		nY := ValnY2(nValorM)
ENDIF
		*Obtener Row de las X y Col de las Y
		nRowX := nRow+40
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200  -  nColY-30
		nHG   := nRowF-nRow -80

		*MsgInfo(nWG)
		*	MsgInfo(nHG)
		*	MsgInfo(nValorN)
		nValDiv:= nHG/nValorN
		*	MsgInfo(nValDiv)
		nAltoN := nHG
		nRowX  := nRow+60
		nVecesN := Int(nValorN/nY)		//Numero de veces que pone los valores en el Eje Y

	ELSEIF lNegativo .and. lPositivo		// HAY COLUMNAS POSITIVAS Y NEGATIVAS ***************
		*Obtener Row de las X y Col de las Y
		nColY := nCol+(nAnchoVal*10)
		nWG   := nColF-200  -  nColY-30
		nHG   := nRowF-nRow -80	
		*MsgInfo(nAnchoVal)
		*OBTENER LOS VALORES MAXIMOS Negativos y Positivos
		FOR n:= 1 TO Len(aValoresS)
			IF aValoresS[n] < 0
				lNegativo := .T.
				IF(Abs(aValoresS[n]) > nValorN , nValorN := Abs(aValoresS[n]) , )
			ELSE
				IF(aValoresS[n] > nValorP , nValorP := aValoresS[n] , )
				lPositivo := .T.
			ENDIF
		Next n
		*CALCULAR VALOR MAXIMO TOTAL
		nValorM := nValorP + nValorN
IF nValorM>9000000
		nY := ValnY(nValorM)
 ELSE
		nY := ValnY2(nValorM)
ENDIF
		nVecesP := Int(nValorP/nY) //Numero de veces que pone los valores en el Eje Y
		IF( nVecesP = 0 , nVecesP := 1,)
		nVecesN := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
		IF( nVecesN = 0 , nVecesN := 1,)	
		*MsgInfo("Veces valores en Y : " + str(nVecesY))
		*nAltoP := nValDiv * aValoresS[1]
		nAltoN := (nHG * nValorN) / nValorM
		nAltoP := (nHG * nValorP) / nValorM
		nValDiv:= nAltoP/nValorP
		nRowX  := nRowF -nAltoN
		*MsgInfo(nVecesP)
		*MsgInfo(nVecesN)
	ENDIF
	
	IF nValorM < 10				// DIEZ
		cFormat := "99"
	ELSEIF 	nValorM < 100			// CIEN
		cFormat := "999"
	ELSEIF 	nValorM < 1000			// MIL
		cFormat := "9,999"
	ELSEIF 	nValorM < 10000			// 10 MIL
		cFormat := "99,999"
	ELSEIF 	nValorM < 100000		// 100 MIL
		cFormat := "999,999"
	ELSEIF 	nValorM < 1000000		// 1 MILLON
		cFormat := "9,999,999"
	ELSEIF 	nValorM > 10000000		// 10 MILLONES
		cFormat := "99,999,999"
	ENDIF

	nColY := nColY + 1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	DEFINE WINDOW MAIN AT 0,0 WIDTH 645 HEIGHT 645 BACKCOLOR {0,128,255} MAIN NOCAPTION NOSIZE

		@ 20,200 LABEL L1 VALUE "GRAFICO AL: "+DTOC(DATE()) WIDTH 365 HEIGHT 30 FONT 'ARIAL' SIZE 16 BOLD UNDER FONTCOLOR WHITE TRANSP

		IF lMarco
		   DRAW LINE IN WINDOW MAIN AT 010,010 TO 010,633 pencolor GREEN penwidth 1	// HORIZONTAL UP
		   DRAW LINE IN WINDOW MAIN AT 010,010 TO 360,010 pencolor GREEN penwidth 1	// VERTICAL IZQ
		   DRAW LINE IN WINDOW MAIN AT 010,633 TO 360,633 pencolor GREEN penwidth 1	// VERTICAL DER
		   DRAW LINE IN WINDOW MAIN AT 360,010 TO 360,633 pencolor GREEN penwidth 1	// HORIZONTAL DOWN
		ENDIF

		DRAW RECTANGLE IN WINDOW MAIN AT 365,10 TO 635,633 pencolor GREEN penwidth 1 FILLCOLOR {0,128,255}
		@ 390,0 LABEL L2 VALUE CIA WIDTH 633 HEIGHT 35 FONT 'ARIAL' SIZE 24 BOLD FONTCOLOR WHITE TRANSP UNDER CENTERALIGN

		@ 450,150 LABEL L3  VALUE "ACTIVOS"                         WIDTH 200 HEIGHT 30 FONT 'ARIAL' SIZE 20 BOLD FONTCOLOR WHITE TRANSP
		@ 450,300 LABEL L3A VALUE (Transform(ACT,'$99,999,999')) WIDTH 400 HEIGHT 50 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE TRANSP

		@ 490,150 LABEL L4  VALUE "PASIVOS"                         WIDTH 550 HEIGHT 35 FONT 'ARIAL' SIZE 20 BOLD FONTCOLOR WHITE TRANSP
		@ 490,300 LABEL L4A VALUE (Transform(PAS,'$99,999,999')) WIDTH 400 HEIGHT 50 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE TRANSP

		@ 530,150 LABEL L5  VALUE "CAPITAL"                         WIDTH 550 HEIGHT 35 FONT 'ARIAL' SIZE 20 BOLD FONTCOLOR WHITE TRANSP
		@ 530,300 LABEL L5A VALUE (Transform(CAP,'$99,999,999')) WIDTH 400 HEIGHT 50 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE TRANSP
IF GAN>0
		@ 570,150 LABEL L6 VALUE "UTILIDAD" WIDTH 550 HEIGHT 35 FONT 'ARIAL' SIZE 20 BOLD FONTCOLOR WHITE TRANSP
 ELSE
		@ 570,150 LABEL L6 VALUE "PERDIDA" WIDTH 550 HEIGHT 35 FONT 'ARIAL' SIZE 20 BOLD FONTCOLOR WHITE TRANSP
ENDIF
		@ 570,300 LABEL L6A VALUE (Transform(GAN,'$99,999,999')) WIDTH 400 HEIGHT 50 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE TRANSP
				
		IF (!lNegativo .and. lPositivo)		// TODOS LOS VALORES POSITIVOS
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200 pencolor WHITE penwidth 1   //EJE X
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor WHITE penwidth 1   //EJE Y
			@ nRowX-10,nColY-25 LABEL Label_2 VALUE "0" FONT 'Arial' SIZE 14 BOLD FONTCOLOR WHITE WIDTH 20 TRANSP			//el "0" entre los ejes
			nColYFija := nColY
			
			FOR n:= 1 TO Len(aValoresS)  //Valores en las X y Barras
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * aValoresS[n]
				DRAW RECTANGLE IN WINDOW MAIN at nRowX-nAltoP,nColY to nRowX,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]	//TODOS POSITIVOS

				@ nRowX,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow-10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n
			FOR n:= 1 TO nVecesP+1  //Valores en Y y Si se ponen Lineas o no.
				cLabel := "Label_" +StrZero(n,2,0)
				nValorY := nY * n 
				nValorY := nValorY * nValDiv
				*MsgInfo(nValorY)
				@ nRowX-nValorY-8,nCol+10 LABEL &(cLabel) VALUE Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //Valores en el eje Y

				IF lLineas
				   DRAW LINE IN WINDOW MAIN at nRowX-nValorY,nColYFija to nRowX-nValorY,nColF-200 pencolor WHITE penwidth 1   //EJE X paralelas
				ENDIF
			Next n
			IF lNegativo
				*MsgBox("Si Hay Negativos")
				nVecesY := Int(nValorN/nY)		//Veces que pone los valores en el Eje Y
				IF (nVecesY = 0,	nVecesY := 1, )
				*MsgInfo(nVecesY)
				FOR n:= 1 TO nVecesY
					cLabel := "Label_" +StrZero(n,4,0)
					nValorY := nY * n 
					nValorY := nValorY * nValDiv
					*MsgInfo(nValorY)
					@ nRowX+nValorY,nCol+10 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //Valores en el eje Y		
					IF lLineas
						draw line in window Main at nRowX+nValorY,nColYFija to nRowX+nValorY,nColF-200 pencolor WHITE penwidth 1   //EJE X paralelas
					ENDIF
				Next n
			ENDIF

		ELSEIF (lNegativo .and. !lPositivo)	// TODOS LOS VALORES NEGATIVOS
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200 pencolor WHITE penwidth 1   //EJE X
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor WHITE penwidth 1   //EJE Y
			@ nRowX-10,nColY-25 LABEL Label_2 VALUE "0" FONT 'Arial' SIZE 14 BOLD FONTCOLOR WHITE WIDTH 20 TRANSPARENT			//el "0" entre los ejes
			nColYFija := nColY
			
			FOR n:= 1 TO Len(aValoresS)
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * Abs(aValoresS[n])
				*MsgInfo(nValDiv)
				*MsgInfo(nAltoP)
				DRAW RECTANGLE IN WINDOW MAIN at nRowX,nColY to nRowX+nAltoP,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]	// TODOS NEGATIVOS

				@ nRowX-15,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n
			IF lNegativo
				*MsgBox("Si Hay Negativos")
				nVecesY := Int(nValorN/nY) //Numero de veces que pone los valores en el Eje Y
				IF (nVecesY = 0,	nVecesY := 1, )
				*MsgInfo(nVecesY)
				FOR n:= 1 TO nVecesY
					cLabel := "Label_" +StrZero(n,4,0)
					nValorY := nY * n 
					nValorY := nValorY * nValDiv
					*MsgInfo(nValorY)
					@ nRowX+nValorY-8,nCol+10 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR BLUE TRANSPARENT //Valores en el eje Y
					IF lLineas
					   DRAW LINE IN window Main at nRowX+nValorY,nColYFija to nRowX+nValorY,nColF-200 pencolor WHITE penwidth 1   //EJE X paralelas
					ENDIF
				Next n
			ENDIF

		ELSEIF lNegativo .and. lPositivo	// POSITIVO & NEGATIVO
			draw line in window Main at nRowX,nColY-10 to nRowX,nColF-200      pencolor WHITE penwidth 1	//EJE X HORIZONTAL
			draw line in window Main at nRowF-20+50,nColY-1 to nRow+40,nColY-1 pencolor WHITE penwidth 1	//EJE Y VERTICAL
			@ nRowX-10,nColY-25 LABEL Label_2 VALUE "0" FONT 'Arial' SIZE 14 BOLD FONTCOLOR WHITE WIDTH 20 TRANSPARENT			//el "0" entre los ejes
			nColYFija := nColY
			
			FOR n:= 1 TO Len(aValoresS)  //Valores en las X y Barras
				cLabel2:= "Label_" +StrZero(n,3,0)
				nAltoP := nValDiv * aValoresS[n]

				DRAW RECTANGLE IN WINDOW MAIN at nRowX-nAltoP,nColY to nRowX,nColY+nWColumn pencolor aColores[n] penwidth 0 fillcolor aColores[n]	// POSITIVO & NEGATIVO

				@ nRowX,nColY LABEL &(cLabel2) VALUE aX[n] WIDTH nColY-nRow - 10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //RIGHTALIGN
				nColY := nColY + nWColumn + 5
			NEXT n
			FOR n:= 1 TO nVecesP //Valores en Y y Si se ponen Lineas o no.
				cLabel := "Label_" +StrZero(n,2,0)
				nValorY := nY * n 
				nValorY := nValorY * nValDiv
				*MsgInfo(STR(nCol))
				@ nRowX-nValorY-8,nCol+30 LABEL &(cLabel) VALUE Transform(nY*n,cFormat) WIDTH nColY-nRow-10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR WHITE TRANSPARENT //Valores en el eje Y
				IF lLineas
				   DRAW LINE IN WINDOW MAIN at nRowX-nValorY,nColYFija to nRowX-nValorY,nColF-200 pencolor WHITE penwidth 1   //EJE X paralelas
				ENDIF
			Next n	
			FOR n:= 1 TO nVecesN
				cLabel := "Label_" +StrZero(n,4,0)
				nValorN := nY * n 
				nValorN := nValorN * nValDiv
				*MsgInfo(STR(nValorN))
				@ nRowX+nValorN-8,nCol+30 LABEL &(cLabel) VALUE "-"+Transform(nY*n,cFormat) WIDTH nColY-nRow-10 HEIGHT 30 FONT 'Arial' SIZE 9 BOLD BACKCOLOR nil FONTCOLOR BLACK TRANSPARENT //Valores en el eje Y
				IF lLineas
				   DRAW LINE IN WINDOW MAIN at nRowX+nValorN,nColYFija to nRowX+nValorN,nColF-200 pencolor WHITE penwidth 1   //EJE X paralelas
				ENDIF
			Next n
		ENDIF
	   ON KEY ESCAPE ACTION ThisWindow.Release
	END WINDOW

	MAIN.CENTER
	MAIN.ACTIVATE

RETURN NIL

*----------------------
FUNCTION ValnY(nValorM)
LOCAL nValRet
		IF nValorM <= 10			// DIEZ
			nValRet := 1
		ELSEIF 	nValorM <= 100			// CIEN
			nValRet := 10
		ELSEIF 	nValorM <= 1000			// MIL
			nValRet := 100
		ELSEIF 	nValorM <= 10000		// 10 MIL
			nValRet := 1000
		ELSEIF 	nValorM <= 100000		// 100 MIL
			nValRet := 10000
		ELSEIF 	nValorM <= 1000000		// 1 MILLON
			nValRet := 100000
		ELSEIF 	nValorM <= 10000000		// 10 MILLONES
			nValRet := 1000000
		ELSEIF 	nValorM >= 100000000		// 100 MILLONES
			nValRet := 1000000
		ENDIF
RETURN nValRet		

*-----------------------
FUNCTION ValnY2(nValorM)
LOCAL nValRet
		IF nValorM <= 10			// DIEZ
			nValRet := 1
		ELSEIF 	nValorM <= 100			// CIEN
			nValRet := 10
		ELSEIF 	nValorM <= 1000			// MIL
			nValRet := 100
		ELSEIF 	nValorM <= 5000			// 5 MIL
			nValRet := 100
		ELSEIF 	nValorM <= 10000		// 10 MIL
			nValRet := 1000
		ELSEIF 	nValorM <= 100000		// 100 MIL
			nValRet := 10000
		ELSEIF 	nValorM <= 500000		// 500 MIL
			nValRet := 10000
		ELSEIF 	nValorM <= 1000000		// 1 MILLON
			nValRet := 100000
		ELSEIF 	nValorM <= 1500000		// 1.5 MILLON
			nValRet := 150000
		ELSEIF 	nValorM <= 3000000		// 3 MILLONES
			nValRet := 300000
		ELSEIF 	nValorM <= 5000000		// 5 MILONES
			nValRet := 500000
		ELSEIF 	nValorM >= 10000000		// 10 MILLONES
			nValRet := 1000000
		ENDIF
RETURN nValRet
Attachments
BG.rar
(142.59 KiB) Downloaded 42 times
BG-BIG.rar
(442.09 KiB) Downloaded 48 times
GRAPH1.jpg
GRAPH1.jpg (101.15 KiB) Viewed 883 times
GRAPH2.jpg
GRAPH2.jpg (96.15 KiB) Viewed 883 times
User avatar
LOUIS
Posts: 256
Joined: Tue Dec 11, 2012 9:05 pm
DBs Used: DBF

Re: Como corrijo una grafica?

Post by LOUIS »

Hola Amigos

Hice unos cambios al código y se los dejo por si a alguien le puede ser útil.
Es para que no muestre PER/GAN sino UTILIDAD o PERDIDA

Saludos.
Attachments
GRAFICO_BG.rar
(3.15 KiB) Downloaded 39 times
GRAPH1.jpg
GRAPH1.jpg (96.47 KiB) Viewed 571 times
GRAPH2.jpg
GRAPH2.jpg (100.49 KiB) Viewed 571 times
Post Reply