Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Problemas y Soluciones de actualización de Query en TDBChart (https://www.clubdelphi.com/foros/showthread.php?t=39157)

rosodo1 11-01-2007 23:57:02

Problemas y Soluciones de actualización de Query en TDBChart
 
Estoy buscando como modificar una consulta y los campos de la consulta emplearlos para generar graficos. El problema lo he visto comentado por muchos foros pero no veo la solucion en ninguno. Ademas os dejo todo el codigo de la aplicacion en pruebas donde podeis ver el problema.
Cuando ejecutamos un boton aparece el grafico asociado pero si pulsamos otro boton entonces ERROR.

Código Delphi [-]
procedure TForm1.Haz(n : Integer);
begin
    DBChart1.SeriesList.Clear;
  case n of
      1:
        begin
          Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('SELECT Provincia, Count(*) AS Amigos ');
        Query1.SQL.Add('FROM Provincias AS P INNER JOIN Amigos A ON P.id=A.Provincia ');
        Query1.SQL.Add('GROUP BY P.provincia;');
        Query1.Active := True;
        DBChart1.Title.Text.Clear;
        DBChart1.Title.Text.Add('Amigos por Provincias');
        ConfigSerie(1,0,1);
      end;
    2:
        begin
          Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('SELECT Provincia, Count(*) AS Clientes ');
        Query1.SQL.Add('FROM Provincias AS P INNER JOIN Clientes C ON P.id=C.Provincia ');
        Query1.SQL.Add('GROUP BY P.provincia;');
        Query1.Active := True;
        DBChart1.Title.Text.Clear;
        DBChart1.Title.Text.Add('Clientes Por Provincias');
        ConfigSerie(1,1,2);
      end;
    end;
  DBChart1.BringToFront;
  DBChart1.Enabled := True;
  DBChart1.Visible := True;
end;

procedure TForm1.ConfigSerie(num: Integer; c1: Integer; c2:Integer);
begin
    series[num] := TBarSeries.Create(DBChart1);
  series[num].ParentChart := DBChart1;
  DBChart1.AddSeries(series[num]);
  with Series[num] do
      begin
        Marks.Style:= smsValue;
      DataSource := Query1;
      XLabelsSource := Query1.FieldList.Fields[c1].DisplayName;;
      XValues.ValueSource := '';
      YValues.ValueSource := Query1.FieldList.Fields[c2].DisplayName;
      Active:=True;
    end;
  DBChart1.CheckDatasource(series[num]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Haz(1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    Haz(2);
end;

Como siempre muchas gracias a todos.

rosodo1 12-01-2007 00:59:48

Si funciona
 
Bueno parece ser que me estaba jugando una mala pasada alguno de los programas en ejecucion o la memoria estaba llenita de fallos, pero el codigo va sin problemas.

Bueno, gracias de igual forma.


La franja horaria es GMT +2. Ahora son las 09:51:14.

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