我先作好frf文件,用SQL语句动态创建数据源,在发布时,我只发布frf和SQL,能动态报表的效果,但是出现错误...
贴出代码:
{FastReport}
    if sProcessMode = '0' then
    begin
      frReport := TfrReport.Create(nil);
      frDBDataSet := TfrDBDataSet.Create(nil);
      try
        frReport.LoadFromFile(sTemplateName);//加入.frf文件
        frDBDataSet.DataSet := sDataSet; //由SQL产生的数据源
        frReport.Dataset := frDBDataSet;
        frReport.PrepareReport;
        frReport.ShowReport;
      finally
        frReport.Free;
        frDBDataSet.Free;
      end;

解决方案 »

  1.   


        if sProcessMode = '0' then
        begin
          frReport := TfrReport.Create(nil);
          frDBDataSet := TfrDBDataSet.Create(nil);
          try
            frReport.LoadFromFile(sTemplateName);//加入.frf文件
            frDBDataSet.DataSet := sDataSet; //由SQL产生的数据源
            frReport.Dataset := frDBDataSet;
            frReport.PrepareReport;
            //////////////////////////////
    //    你看看是否需要使用如下语句
            frReport.StoreInDFM
             ///////////////////////////////
            frReport.ShowReport;
          finally
            frReport.Free;
            frDBDataSet.Free;
          end;
      

  2.   

    //    你看看是否需要使用如下语句
            frReport.StoreInDFM:=true;
      

  3.   

    我作了一个简单的例子,发现
    动态创建tfrDBDataSet是不会出现错误,只是动态创建tfrReport出现错误码
     if sProcessMode = '0' then
        begin
          frDBDataSet := TfrDBDataSet.Create(nil);
          try
            frReport1.LoadFromFile(sTemplateName);//加入.frf文件
            frDBDataSet.DataSet := sDataSet; //由SQL产生的数据源
            frReport1.Dataset := frDBDataSet;
            frReport1.PrepareReport;
            frReport1.ShowReport;
          finally
            frDBDataSet.Free;
          end;
    是通过的
      

  4.   

    我在想是不是在加入
    initialization 
      RegisterClass
      

  5.   

    我已否认了initialization  RegisterClass是错误的
    我作了一个例子,发现
    frReport := TfrReport.Create(Form1);
    就可以运行,主要是我将frReport封装到DLL中,是没有Form,现在我应怎样办?????
    我又试了
    Applicatin.handle := AHandle;//AHandle是方法参数
    frReport := TfrReport.Create(Application.mainForm);
    frReport := TfrReport.Create(Application);
    都不行