Ver Mensaje Individual
  #1  
Antiguo 11-01-2007
rosodo1 rosodo1 is offline
Registrado
 
Registrado: dic 2006
Posts: 6
Reputación: 0
rosodo1 Va por buen camino
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.

Última edición por rosodo1 fecha: 12-01-2007 a las 00:09:26.
Responder Con Cita