请哪为大侠帮忙看看下面代码为何只出来一条曲线,谢谢!暂时没分了!procedure TForm2.BitBtn1Click(Sender: TObject);
var
  ADOQuery: Array of TADOQuery;
  frxDBDataSet: Array of TfrxDBDataset;
  SeriesRec: Array of TFastLineSeries;
  sSQL: string;
  rs,rs1,i,j: integer;
begin
  TfrxChartView(frxReport1.FindObject('Chart1')).ClearSeries;
  TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Clear;
  SetLength(SeriesRec,2);
  SetLength(frxDBDataSet,2);
  SetLength(ADOQuery,2);
  SeriesRec[0]:=TFastLineSeries.Create(TfrxChartView(frxReport1.FindObject('Chart1')));
  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.View3D:=False;
  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.AddSeries(SeriesRec[0]);
  sSQL:='SELECT Z002,Z003 FROM ZYC WHERE Z001='''+'A'+''' ORDER BY Z002';
  ADOQuery[0]:=TADOQuery.Create(nil);
  ADOQuery[0].Connection:=ADOConnection1;
  ADOQuery[0].Close;
  ADOQuery[0].SQL.Clear;
  ADOQuery[0].SQL.Add(sSQL);
  ADOQuery[0].Open;
  frxDBDataSet[0]:=TfrxDBDataSet.Create(nil);
  frxDBDataset[0].Name := ADOQuery[0].Name;
  frxDBDataSet[0].DataSet:=ADOQuery[0];
  Frxreport1.DataSets.Add(frxDBDataSet[0]);
  DataSource1.DataSet:=ADOQuery[0];
  with TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Add do
  begin
    DataType := dtDBData;
    XSource := frxDBDataset[0].Name+'.'+AnsiQuotedStr('Z002','"');
    YSource := frxDBDataset[0].Name+'.'+ AnsiQuotedStr('Z003','"');
    DataSet := frxReport1.GetDataset(frxDBDataset[0].Name);
  end;  SeriesRec[1]:=TFastLineSeries.Create(TfrxChartView(frxReport1.FindObject('Chart1')));
  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.View3D:=False;
  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.AddSeries(SeriesRec[1]);
  sSQL:='SELECT Z002,Z003 FROM ZYC WHERE Z001='''+'B'+''' ORDER BY Z002';
  ADOQuery[1]:=TADOQuery.Create(nil);
  ADOQuery[1].Connection:=ADOConnection1;
  ADOQuery[1].Close;
  ADOQuery[1].SQL.Clear;
  ADOQuery[1].SQL.Add(sSQL);
  ADOQuery[1].Open;
  frxDBDataSet[1]:=TfrxDBDataSet.Create(nil);
  frxDBDataset[1].Name := ADOQuery[1].Name;
  frxDBDataSet[1].DataSet:=ADOQuery[1];
  Frxreport1.DataSets.Add(frxDBDataSet[1]);
  DataSource2.DataSet:=ADOQuery[1];
  with TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Add do
  begin
    DataType := dtDBData;
    XSource := frxDBDataset[1].Name+'.'+AnsiQuotedStr('Z002','"');
    YSource := frxDBDataset[1].Name+'.'+ AnsiQuotedStr('Z003','"');
    DataSet := frxReport1.GetDataset(frxDBDataset[1].Name);
  end;
  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.Repaint;
  frxReport1.ShowReport(True);
end;

解决方案 »

  1.   

    楼主可以考虑在主窗那里放TDBChart,然后打印时,保存为图片或WMF文件,然后FR导入
      

  2.   

    dinoalex:你好!那样还是比较麻烦些,请问我这样为何只出来一条呢?
      

  3.   

    问题应该是出在 frxDBDataSet 的 NAME 上面.你在ShowReport之前SHOWMESSAGE一下这些NAME, 估计是空的.
      

  4.   

    这个,在我这边是OK的.
    procedure TMainForm.Button1Click(Sender: TObject);
    var
    //  ADOQuery: Array of TADOQuery;
      frxDBDataSet: Array of TfrxDBDataset;
      SeriesRec: Array of TFastLineSeries;
    //  sSQL: string;
      rs,rs1,i,j: integer;
    begin
      frxReport1.LoadFromFile('printfr.fr3');
      
      TfrxChartView(frxReport1.FindObject('Chart1')).ClearSeries;
      TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Clear;
      SetLength(SeriesRec,2);
      SetLength(frxDBDataSet,2);
      frxReport1.DataSets.Clear;//  SetLength(ADOQuery,2);
      SeriesRec[0]:=TFastLineSeries.Create(TfrxChartView(frxReport1.FindObject('Chart1')));
      TfrxChartView(frxReport1.FindObject('Chart1')).Chart.View3D:=False;
      TfrxChartView(frxReport1.FindObject('Chart1')).Chart.AddSeries(SeriesRec[0]);
    //  sSQL:='SELECT Z002,Z003 FROM ZYC WHERE Z001='''+'A'+''' ORDER BY Z002';
    {  ADOQuery[0]:=TADOQuery.Create(nil);
      ADOQuery[0].Connection:=ADOConnection1;
      ADOQuery[0].Close;
      ADOQuery[0].SQL.Clear;
      ADOQuery[0].SQL.Add(sSQL);
      ADOQuery[0].Open;
    }
      frxDBDataSet[0]:=TfrxDBDataSet.Create(nil);
      frxDBDataset[0].Name := 'frxDBDataset1'; //ADOQuery[0].Name;
      frxDBDataSet[0].DataSet:= GQ.FADOQ; //ADOQuery[0];
      Frxreport1.DataSets.Add(frxDBDataSet[0]);  with TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Add do
      begin
      DataType := dtDBData;
      XSource := frxDBDataset[0].Name+'.'+AnsiQuotedStr('d','"');
      YSource := frxDBDataset[0].Name+'.'+ AnsiQuotedStr('v','"');
      DataSet := frxReport1.GetDataset(frxDBDataset[0].Name);
      end;  SeriesRec[1]:=TFastLineSeries.Create(TfrxChartView(frxReport1.FindObject('Chart1')));
      TfrxChartView(frxReport1.FindObject('Chart1')).Chart.View3D:=False;
      TfrxChartView(frxReport1.FindObject('Chart1')).Chart.AddSeries(SeriesRec[1]);
    //  sSQL:='SELECT Z002,Z003 FROM ZYC WHERE Z001='''+'B'+''' ORDER BY Z002';
    {  ADOQuery[1]:=TADOQuery.Create(nil);
      ADOQuery[1].Connection:=ADOConnection1;
      ADOQuery[1].Close;
      ADOQuery[1].SQL.Clear;
      ADOQuery[1].SQL.Add(sSQL);
      ADOQuery[1].Open;            }  frxDBDataSet[1]:=TfrxDBDataSet.Create(nil);
      frxDBDataset[1].Name := 'frxDBDataset2'; //ADOQuery[1].Name;
      frxDBDataSet[1].DataSet:=LQ.FADOQ;//ADOQuery[1];
      Frxreport1.DataSets.Add(frxDBDataSet[1]);  with TfrxChartView(frxReport1.FindObject('Chart1')).SeriesData.Add do
      begin
      DataType := dtDBData;
      XSource := frxDBDataset[1].Name+'.'+AnsiQuotedStr('d','"');
      YSource := frxDBDataset[1].Name+'.'+ AnsiQuotedStr('v','"');
      DataSet := frxReport1.GetDataset(frxDBDataset[1].Name);
      end;  TfrxChartView(frxReport1.FindObject('Chart1')).Chart.Repaint;
      frxReport1.ShowReport(True);
    end;
      

  5.   

    dinoalex: 早上好!  你的例子我看了,你的frxDBDataset1,frxDBDataset2是手工在上面新建的,不是动态新建的,能帮我看看动态新建frxDBDataset数据源吗?那样才能做到动态效果,谢谢!
      

  6.   


    先生,谁说不是动态建的?? 上面的代码就是你的代码啊!!! 只是替换了ADOQUERY而已,是一样的!!!
      

  7.   

    除ADOQUERY不是动态建的外, 其它的我只作了少许的改动..加了第六行的 frxReport1.DataSets.Clear;frxDBDataset[0].Name := 'frxDBDataset1'; //ADOQuery[0].Name;
    即 frxDBDataset[0].Name := ADOQuery[0].Name; 你可以换成:
    frxDBDataset[i].Name := 'frxDBDataset'+inttostr(i);
      

  8.   

    dinoalex: 你好!有个问题想问问你,可以吗?
      

  9.   

    dinoalex: 你好!我QQ号是: 279841085
      

  10.   

    dinoalex: 你好!能否帮我看看这曲线图为啥是乱的? 我是用上面程序做的,谢谢!