Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
tdbchart + adoquery en delphi 7

Buenos días a Todos Colegas.

Tengo una tabla con los siguientes campos (Cantidad y Actividad) con la finalidad de llevar un conteo de las actividades y lo hago a través de un Adoquery.

Adjunto una imagen de la información que obtengo de la base de datos.

En este sentido, he leído mucho pero no logro hacer un grafico que quiero en Delphi 7.

Al elegir un grafico circular automáticamente en la leyenda aparecen la cantidad de equipos mas el nombre del equipo obtenido.

Entonces eso mismo quiero hacer con esta información que obtuve de la base de datos.

Quiero que me muestre tanto el porcentaje como el nombre de la actividad y al elegir el datasource en el TDBCHART, solo me permite elegir el campo numérico.

Espero haberme explicado bien y Gracias de antemano por su colaboración.

Saludos.
Imágenes Adjuntas
Tipo de Archivo: jpg Captura.jpg (19,8 KB, 7 visitas)
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #2  
Antiguo 16-01-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
jeremiselxi,

Cita:
...no logro hacer un gráfico que quiero en Delphi 7...


Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 16-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cita:
Empezado por nlsgarcia Ver Mensaje
jeremiselxi,



Revisa esta información:
Espero sea útil

Nelson.
Muchisisimas gracias nlsgarcia.

Adjunto el código que me funcionó.

Primero debemos agregar un adoquery y renombrarlo como "table".

Hay que agregar un dbtchart y dando doble click agregar una serie.

Adjunto el código:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, Grids,
  DBGrids, DB, ADODB, StdCtrls, DBClient;

type
  TForm1 = class(TForm)
    table: TADOQuery;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    tableACTIVIDADESREALIZADAS: TWideStringField;
    tableTOTALES: TIntegerField;
    DBChart1: TDBChart;
    Series1: TPieSeries;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


  
//las constantes
const
  GColor : Array[1..12] of TColor = (clGreen, clOlive, clNavy, clPurple, clTeal,
                                     clGray, clSilver, clRed, clLime, clYellow,
                                     clBlue, clFuchsia);
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);

var
   actividades : String;
   totales : Integer;
   i : Integer;

begin

   if Assigned(Table) then
   begin

      i := 1;

      with DBChart1 do
      begin
         Title.Text.Clear;
         Title.Text.Add('Relación porcentual de las tareas rutinarias realizadas en el año'); //Aquí va el titulo del Grafico
         Legend.Visible := true;
         LeftAxis.Title.Caption := 'TOTALES'; //aquí va el titulo de la columna totales
         LeftAxis.Title.Font.Color := clBlue;
         BottomAxis.Title.Caption := 'ACTIVIDADES REALIZADAS';  //aquí va el titulo de la columna de las actividades
         BottomAxis.Title.Font.Color := clBlue;
      end;

      with Series1 do
      begin

         Clear;

         Marks.Style := smsPercent;

         with Table do
         begin
            Open;
            while not eof do
            begin
               actividades := Table.FieldByName('ACTIVIDADES REALIZADAS').AsString;
               totales := Table.FieldByName('TOTALES').AsInteger;
               Add(totales, actividades, GColor[i]);
               inc(i);
               Next;
            end;
            //Close;
         end;

      end;

   end;

end;

Ahora solo tengo un solo problema y es como hacer para que el porcentaje del grafico este un poco desagrupado, ya que aparecen uno arriba de otro como muestra la imagen adjunta.

Alguien tiene alguna idea de como solucionarlo?.

Saludos y gracias
Imágenes Adjuntas
Tipo de Archivo: jpg Captura.jpg (17,2 KB, 6 visitas)
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #4  
Antiguo 20-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Nadie por aquí?
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #5  
Antiguo 20-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Wink

Cita:
Empezado por jeremiselxi Ver Mensaje
Nadie por aquí?
Me respondo yo mismo, cree una variable global llamada rotar y cree dos botones llamado giraraladerecha y giraralaizquierda.

El código completo seria así:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, Grids,
  DBGrids, DB, ADODB, StdCtrls, DBClient, ExcelXP, OleServer, ComObj;

type
  TForm1 = class(TForm)
    table: TADOQuery;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    generargrafico: TButton;
    tableACTIVIDADESREALIZADAS: TWideStringField;
    tableTOTALES: TIntegerField;
    ExcelChart1: TExcelChart;
    ExcelApplication1: TExcelApplication;
    ExcelChart2: TExcelChart;
    DBChart1: TDBChart;
    Series1: TPieSeries;
    giraralaizquierda: TButton;
    giraraladerecha: TButton;
    procedure FormCreate(Sender: TObject);
    procedure generargraficoClick(Sender: TObject);
    procedure giraralaizquierdaClick(Sender: TObject);
    procedure giraraladerechaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


  
//las constantes
const
  GColor : Array[1..12] of TColor = (clGreen, clOlive, clNavy, clPurple, clTeal,
                                     clGray, clSilver, clRed, clLime, clYellow,
                                     clBlue, clFuchsia);
var
  Form1: TForm1;

implementation

{$R *.dfm}
var
rotar : Integer;


procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;

procedure TForm1.generargraficoClick(Sender: TObject);

var
   actividades : String;
   totales : Integer;
   i : Integer;

begin
   table.First;
   
   if Assigned(Table) then
   begin
      rotar:=1;
      i := 1;

      with DBChart1 do
      begin
         Title.Text.Clear;
         Title.Text.Add('Relación porcentual de las tareas rutinarias realizadas en el año');
         Legend.Visible := true;
         LeftAxis.Title.Caption := 'TOTALES';
         LeftAxis.Title.Font.Color := clBlue;
         BottomAxis.Title.Caption := 'ACTIVIDADES REALIZADAS';
         BottomAxis.Title.Font.Color := clBlue;
      end;

      with Series1 do
      begin

         Clear;

         Marks.Style := smsPercent;

         with Table do
         begin
            Open;
            while not eof do
            begin
               actividades := Table.FieldByName('ACTIVIDADES REALIZADAS').AsString;
               totales := Table.FieldByName('TOTALES').AsInteger;
               Add(totales, actividades, GColor[i]);
               inc(i);
               Next;
            end;
            //Close;
         end;

      end;

   end;

end;



procedure TForm1.giraralaizquierdaClick(Sender: TObject);

begin

   if Assigned(Table) then
   begin

      rotar := rotar+5;

      with DBChart1 do
      begin

      end;

      with Series1 do
        RotationAngle:= rotar;

   end;

end;

procedure TForm1.giraraladerechaClick(Sender: TObject);
begin

   if Assigned(Table) then
   begin

      rotar := rotar-5;

      with DBChart1 do
      begin

      end;

           with Series1 do
      begin
        try
        RotationAngle:= rotar;
        except
        ShowMessage('Has llegado al inicio');

           end;
       end;
   end;


end;

end.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con ADOQUERY registros desaparecidos (SQL SERVER + Delphi 7) HccSoft Conexión con bases de datos 1 26-04-2010 16:01:00
crear consulta adoquery en delphi Yensis22 Conexión con bases de datos 2 16-06-2008 23:09:46
Error no especificado en Delphi 5 con ADOQuery Alexander SQL 1 12-08-2005 03:13:13
Ordenar ADOQuery en Delphi Francisco Rguez Conexión con bases de datos 2 02-08-2005 02:32:54
como manejo adoquery en delphi. jas010 SQL 4 27-01-2005 22:47:33


La franja horaria es GMT +2. Ahora son las 08:18:36.


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
Copyright 1996-2007 Club Delphi