Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Tchart Grafico de lineas (https://www.clubdelphi.com/foros/showthread.php?t=91594)

ingel 10-03-2017 15:09:50

Tchart Grafico de lineas
 
Buendia a todos . Estoy necesitando graficar una consulta. He visto el componente Tchart ( que nunca he usado por cierto ) Lo que tengo que graficar son las ventas por dia por vendedor.
Necesito hacer un grafico de lineas en donde el eje x representaria cada dia , en el eje y estaria el monto
vendido y CADA LINEA seria UN VENDEDOR ...
si alguien pudiera exponer un ejemplo basico de como comenzar a desarrollar esto se lo agradeceria.
sobre todo en la creacion de las series que dependera de cuantos vendedores haya involucrados en ese periodo.
GRACIAS

Casimiro Notevi 10-03-2017 17:55:02

Echa un vistazo a los enlaces de abajo del todo de la página.

Neftali [Germán.Estévez] 13-03-2017 18:00:58

¿De dónde salen los datos que tienes que mostrar?

Lo digo porque si el formato de los datos es el correcto, el gráfico casi sale de forma automática.

ingel 13-03-2017 18:35:44

grafico de lineas
 
Buendia Neftali , Gracias por tu respuesta !...
El dato que tengo que graficar es el Total Facturado por vendedor , por dia , y el TOTAL FACTURADO sale de varias consultas ( Facturacion - Notas de Credito + Ventas telefonicas = total Facturado )
y la cantidad de vendedores ( lineas del grafico ) salen al momento de hacer la consulta segun cuantos se encuentren involucrados en las ventas del periodo de fechas consultado ...
sds

ecfisa 14-03-2017 05:46:59

Hola.

Un ejemplo básico:
Código SQL [-]
/* Tabla vendedores */
CREATE TABLE VENDORS (
    ID      INTEGER,
    NOMBRE  VARCHAR(20)
);

/* Tabla ventas */
CREATE TABLE VENTAS (
    ID       INTEGER,
    FECHA    DATE,
    VEND_ID  INTEGER,
    MONTO    NUMERIC(18,3)
);

Datos (VENDORS)
Código:

ID        NOMBRE
1        JUAN
2        PEDRO
3        ANA
4        MARIO
5        BEATRIZ

Datos (VENTAS)
Código:

ID    FECHA            VEND_ID        MONTO
1    01.03.2017    1          100
2    01.03.2017    1                50
3    01.03.2017    2                105
3    01.03.2017    3                109
4    01.03.2017    4                27
5    01.03.2017    5                203


Delphi:
Código Delphi [-]
...
implementation

uses Series;

procedure TForm1.ShowChart( const Fecha: TDate );
var
  i : Integer;
  se: TBarSeries;
begin
  tuQuery.Close;
  tuQuery.SQL.Clear;
  tuQuery.SQL.Add( 'SELECT VD.NOMBRE AS NOMBRE, SUM(VT.MONTO) AS MONTO' );
  tuQuery.SQL.Add( 'FROM VENTAS VT JOIN VENDORS VD ON VT.VEND_ID = VD.ID' );
  tuQuery.SQL.Add( 'WHERE VT.FECHA = :FECHA' );
  tuQuery.SQL.Add( 'GROUP BY VD.NOMBRE' );
  tuQuery.ParamByName( 'FECHA' ).AsDate := Fecha;
  tuQuery.Open;

  for i := Chart1.SeriesCount-1 downto 0 do
    Chart1.Series[i].Free;

  while not tuQuery.Eof do
  begin
    se := TBarSeries.Create( Self );
    se.ShowInLegend := false;
    se.Add( tuQuery.FieldByName( 'MONTO' ).AsFloat,
            tuQuery.FieldByName( 'NOMBRE' ).AsString );
    Chart1.AddSeries( se );
    tuQuery.Next;
  end;
end;


// Ejemplo de llamada
procedure TForm1.btnShowClick( Sender: TObject );
begin
  ShowChart( StrToDate( '01/03/2017' ) ); 
end;

Salida:


Saludos :)

Neftali [Germán.Estévez] 14-03-2017 10:41:21

Me refería a que si los datos ya los tienes en una consulta/tabla (tal y como ha mostrado muy bien ecfisa) el gráfico te saldrá sólo.
Si no es así, te recomiendo utilizar un Stored Procedure para volcarlos en una tabla temporal (o cursor) y de ahí generar el gráfico.

ingel 14-03-2017 14:03:33

Gracias a TODOS por su ayuda !... ya lo tengo encamindo , una consulta mas ..
ya logre hacer una TLineSeries por vendedor , tengo el importe en el eje de las y las fechas en las x.
Solo me restaria crear una referencia para indicar que vendedor es ..
Por ejemplo con el mismo Color de la linea arriba a la derecha o en algun lugar poder poner el nombre del vendedor como referencia.
gracias

newtron 14-03-2017 15:06:52

Hola.

Si lo que quieres es poner, por ejemplo, un texto en el pie del gráfico puedes hacer lo siguiente:

Código Delphi [-]
  Chart1.Foot.Text.Clear ;
  Chart1.Foot.Text.Add ('Este es el texto');

Saludos

ingel 14-03-2017 16:30:06

Gracias Newtron por tu respuesta ...
no es exactamente lo que quisiera .. Lo que yo tengo graficado son 'varias' lineas de diferentes colores, donde cada una representa a un vendedor . Lo que quisiera es poner en algun lado del grafico (quizas con alguna propiedad) una referencia de que linea corresponde a que vendedor ...
Ej -- Linea color Verde : PEDRO
Linea color Rojo : JOSE

Gracias por tu tiempo..

ecfisa 14-03-2017 16:56:53

Hola
Cita:

Empezado por ingel (Mensaje 514305)
...
Lo que quisiera es poner en algun lado del grafico (quizas con alguna propiedad) una referencia de que linea corresponde a que vendedor ...
Ej -- Linea color Verde : PEDRO
Linea color Rojo : JOSE

A ver si lo que buscas es algo así...

Código Delphi [-]
...
procedure TForm1.ShowChart(const Fecha: TDate);
var
  i : Integer;
  se: TBarSeries;
begin
  ...

  while not tuQuery.Eof do
  begin
    se := TBarSeries.Create( Self );
    se.Title := tuQuery.FieldByName('NOMBRE').AsString;        // <-- Leyenda
    se.Add( tuQuery.FieldByName('MONTO').AsFloat, se.Title );
    Chart1.AddSeries(se);
    tuQuery.Next;
  end;
end;


Saludos :)

ingel 14-03-2017 17:39:31

GRACIAS !! si.. eso es exactamente... le active la propiedad se.ShowInLegend := true;
y se ve la referencia perfectamente...
GRACIAS !


La franja horaria es GMT +2. Ahora son las 03:40:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi