使用FastReport2.46,动态加载报表模板文件及设置DataSet,
模板文件中的数据字段与DataSet的字段一致,在另一个相同程序中运行正常。
当 frReport1.PrepareReport时报错:
   Cannot assign a TFieldList to a TStringList.
我想可能和我的设置有关,但我都比较了没有找出来,请问是否有人能为我解决呢?

解决方案 »

  1.   

    应该是在之前的语句报的错
    是类型匹配问题
    FastReport的PrepareReport没这种错误
    你再检查一下
      

  2.   

    我也觉得奇怪,我的另一程序也没有问题。但是这段真的是在这一位置出错了,百思不得其解,又没有定义这样的类型的变量。
    具体代码如下:
    var
      frFileName : String;
    begin
      frFileName := GetCurrentDir+'\Report\1.frf';
      frReport1.LoadFromFile(frFileName);  frDBDataSet1.RangeBegin := rbCurrent; 
      frDBDataSet1.RangeEnd := reCurrent;
      frDBDataSet1.Dataset := AdoQuery1;
      frReport1.OnGetValue := nil;
      try
        if frReport1.PrepareReport then   frReport1.ShowPreparedReport;
      except
        
      end;
      frDBDataSet1.DataSet := nil;
    end;  
        
      

  3.   

    你上面的这段代码没有问题(已经调试过,没有什么异常),不过你完全可以不必要定义变量,你可以换几个字段后进行调试:
    --------------------------------------
    begin
      frReport1.LoadFromFile(GetCurrentDir+'\Report\1.frf');  frDBDataSet1.RangeBegin := rbCurrent; 
      frDBDataSet1.RangeEnd := reCurrent;
      frDBDataSet1.Dataset := AdoQuery1;
      frReport1.OnGetValue := nil;
      try
        if frReport1.PrepareReport then   frReport1.ShowPreparedReport;
      except
        
      end;
      frDBDataSet1.DataSet := nil;
    end;