我用一个RadioGroup1来选择统计方式,是按员工,还是按月份等等,统计按钮动态实现显示,但每次第一个统计的方式没事,但如果想选别的就不行,再统计时,就说上一个统计条件找不到如:ADOQuery field[员工]找不到

解决方案 »

  1.   

    是不是在RadioGroup1Click要清除一些东东?
      

  2.   

    是不是在RadioGroup1Click要清除一些东东?
      

  3.   

    procedure Ttjfrm.Button4Click(Sender: TObject);
    var
     i_tjfrm:single;
     vPie: TPieSeries;
     vBar: TBarSeries;
     sqlstr : ansistring;
     sqlstr3:string;
    begin
    i_tjfrm:=0;              sqlstr3:=sqlstr1;
                  sqlstr3:=sqlstr3+' where 员工号 like ''';
                  sqlstr3:=sqlstr3+trim(combobox1.Text);
                  sqlstr3:=sqlstr3+'%''';
                    sqlstr3:=sqlstr3+' GROUP BY ';
                    sqlstr3:=sqlstr3+RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
                     try
                     module1.ADOQtoof.Close;
                     module1.ADOQtoof.SQL.Clear;
                     module1.ADOQtoof.SQL.Text:=sqlstr3;
                     module1.ADOQtoof.Open;
                     module1.ADOQtoof.First;
                     while not module1.ADOQtoof.Eof do
                     begin
                     i_tjfrm:=i_tjfrm+module1.ADOQtoof.Fields[0].AsFloat;
                       module1.ADOQtoof.Next;
                       end;
                    finally
                        sqlstr3:=FloatToStr(i_tjfrm);
                        module1.ADOQtoof.Close;
                         module1.ADOQtoof.SQL.Clear;//以上为我求总数的过程
                      end;
                  sqlstr:='SELECT ';
                 sqlstr:=sqlstr+RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
                 sqlstr:=sqlstr+' , count(*) AS 人数 , 100*count(*)/';
                 sqlstr:=sqlstr+sqlstr3;
                 sqlstr:=sqlstr+'  AS [百分比(%)] ';
                 sqlstr:=sqlstr+' FROM ' ;
                 sqlstr:=sqlstr+ pagecontrol1.ActivePage.Caption  ;
                 sqlstr:=sqlstr+ ' where 员工号 like ''';
                 sqlstr:=sqlstr+trim(combobox1.Text);
                 sqlstr:=sqlstr+'%''';
                 sqlstr:=sqlstr+' GROUP BY ';
                 sqlstr:=sqlstr+RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
    //以上为统计
     module1.ADOQtotj.Close;
     module1.ADOQtotj.SQL.Clear;
     module1.ADOQtotj.SQL.Text:=sqlstr;
     module1.ADOQtotj.Open;
     mainfrm.StatusBar1.Panels[0].Text:=RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]+' 共计 '+sqlstr3;
     begin
     if RadioGroup2.ItemIndex =0 then//选择什么显示方式
     begin
     DBChart1.SeriesList.Clear;
     vBar := TBarSeries.Create(nil);
     DBChart1.AddSeries(vBar);
     vBar.ParentChart := DBChart1;
     vbar.BarStyle :=bsRectGradient;
     vbar.ColorEachPoint :=True;
     vbar.XValues.DateTime := False;
     vbar.AutoBarSize :=False;
     vbar.BarWidthPercent := 70;
     vbar.OffsetPercent :=0;
     vBar.Marks.Style := smsValue;
      vbar.DataSource:=module1.ADOQtotj;
     vbar.XLabelsSource:=DBGrid1.Columns[0].FieldName ;
     vbar.YValues.ValueSource:=DBGrid1.Columns[1].FieldName;
     vbar.RefreshSeries;
     end
     else if RadioGroup2.ItemIndex =1 then
     begin
     DBChart1.SeriesList.Clear;
     vpie := TPieSeries.Create(nil);
     DBChart1.AddSeries(vpie);
     vpie.ParentChart := DBChart1;
     vpie.ColorEachPoint :=True;
     vpie.Marks.Style := smsLabelPercent;
     vpie.DataSource:=module1.ADOQtotj;
     vpie.XLabelsSource:= DBGrid1.Columns[0].FieldName ;
     vpie.YValues.ValueSource:=DBGrid1.Columns[1].FieldName ;
     vpie.RefreshSeries;
     end;
     end;
     DBChart1.RefreshData;end;
      

  4.   

    是不是要在RadioGroup1Click中将它free掉,那怎么再调用呢