Ver Mensaje Individual
  #3  
Antiguo 18-04-2016
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Reputación: 17
kapcomx Va por buen camino
acabo de hacer algo asi, lo que hago es definir por codigo el valores de los axis.left y axis.right.
a grandez rasgos tengo en una tabla llamada anualdonde tengo tres columnas productos activados, pagados y comision. adicionalmente el campo fk_cliente, anho, tipo_prod y otros...

dentro del formulario escogo el cliente, el tipo de producto y el año con eso hago una consulta. esa consulta la ingreso en un data set
"dm.dsanual", uso este data set para ligarlo al dbchart.

a grandez rasgos hago esto

1. hago la consulta en base al cliente y los otros datos (dm.dsanual) los ordeno de menor a mayor
2. defino primero los valores del axis de la izquierda:
Código Delphi [-]


//aca defino el maximo
dm.mydataset.last;
dbchart1.axes.left.maximuim := ((dm.dsanualactivos.asinteger) * 1.30 ); //el 1.30 es para tener un margen y la grafica no se desborde
maximoleft := dm.dsanualactivos.asinteger;

//aca defino el mimino
dm.mydataset.first;
dbchart1.axes.left.minimum := 0; 
minimoleft := 0;


convesion:=0; //esta variable la ocupo para hacer la conversion de los valores de la derecha 

dm.mydataset.first;

mayor := dm.mydatasetcomision.value;

while not (dm.mydataset.oef) do 
begin 

if (dm.mydatasetcomision.value > valor) then 
  begin 
     mayor := dm.dsanualcomision.value;
     conversion:= mayor / dm.dsanualactivos.value;   //esto lo hago para dividir la mayor cantidad pagada entre el numero de equipos activados.
   end;


dm.dsanual.next;
end;

//hago una especie de factor de escala

conversion := conversion * 0.8;

factor := round (conversion);


if factor:= 0 then 
factor:= 1;

//aca defino las rotulos de la derecha

dbchart1.axes.right.maximum := ((maximo_left * factor) * 1.30);
dbchart1.axes.right.minimum := (1 * factor);
dbchart1.axes.right.visible:= true;


//aca hago un update de la tabla dondce cambio el campo factor 

dm.cambia(dm.ds1, 'update anual set factor = (comision /'+floattostr(factor) + ')'); //cambia es un procedimiento donde atrapo el data set y ejecuto la consulta enviada....

// refresco la consulta de la tabla anual 
dm.filtra(dm.dsanual, dm.con_anual + ' fk_cliente= ' + inttostr(dblckclientes.keyvalue)); //filtra es un procedimiento que uso para hacer consultas

//una vez actualizado mando llamar el grafico
dbchart1.visible:= true;



con ese codigo puedo generar el grafico con dos factores diferentes la izquierda el numero de productos comprados, activados y a la derecha el total en $$$ de sus comisiones generadas.

Espero te pueda servir mi ejemplo..


Saludos...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita