PDA

Ver la Versión Completa : Problemas y Soluciones de actualización de Query en TDBChart


rosodo1
11-01-2007, 23:57:02
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.


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
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.