我的代码,运行到frxReport1.PrepareReport() 就出错                  Query_RP.Close;
                  Query_RP.SQL.Clear;                                         
                  Query_RP.SQL.Add(Str_SQL);
                  Query_RP.Parameters.ParamByName('SNO').Value := Query_Search.FieldByName('SNO').AsString;
                  Query_RP.Open;
                  Str_Path:=  ExtractFilePath( Application.ExeName );
                  Str_RPFile := Str_Path + 'rp\rp3.fr3';                  frxReport1.LoadFromFile(Str_RPFile,True);                  frxReport1.PrepareReport();
                  frxReport1.PrintOptions.ShowDialog:=false;
                  frxReport1.print;一个朋友,帮我把unit frxDBSet;修改了下 
if (ReportRef <> nil) and (frxResources <> nil)  then  //添加这一行上去,就不出错了  我用FR的版本是3.0{******************************************}
{                                          }
{             FastReport v3.0              }
{               DB dataset                 }
{                                          }
{         Copyright (c) 1998-2004          }
{         by Alexander Tzyganenko,         }
{            Fast Reports Inc.             }
{                                          }
{******************************************}function TfrxDBDataset.GetValue(Index: String): Variant;
var
  i: Integer;
begin
  i := Fields.IndexOf(Index);
  if i <> -1 then
    Result := TField(Fields.Objects[i]).Value
  else
  begin
    Result := Null;
    if (ReportRef <> nil) and (frxResources <> nil)  then  //添加这一行上去          
    ReportRef.Errors.Add(ReportRef.CurObject + ': ' +
      frxResources.Get('dbFldNotFound') + ' ' + UserName + '."' + Index + '"');
  end;
end;
请问是什么问题

解决方案 »

  1.   

    {******************************************}
    {                                          }
    {             FastReport v3.0              }
    {               DB dataset                 }
    {                                          }
    {         Copyright (c) 1998-2004          }
    {         by Alexander Tzyganenko,         }
    {            Fast Reports Inc.             }
    {                                          }
    {******************************************}unit frxDBSet;interface{$I frx.inc}uses
      SysUtils, Windows, Messages, Classes, frxClass, DB
    {$IFDEF Delphi6}
    , Variants
    {$ENDIF};
      

  2.   

    并不是版本有BUG,而是你的报表没设计好,ReportRef.Errors.Add();
    这一句就是显示错误信息的,你加了判断实际上就是把你的程序错误的地方隐藏了,治标不治本
    要是那天重新装了frx忘记了修改源代码,错误一样存在frxResources不用判断,源代码在调用时已经判断了,不存在会自动创建
    ReportRef就是frxDBDataset关联的frxReport1所以修改方法:报表中用到frxDBDataset要设置它的DataSet属性为ADOQuery或者其它数据集
      

  3.   


    恩,那个报表很简单,就是打印一个单据,不知道是不是没有 放DataMaster的原因,我直接把字段拖到Page上边,先改改试试吧
      

  4.   


    顺便问下,包含Report Machine 报表的程序发布,需要些什么东西,比如带个什么包?昨天用了一下Report Machine ,程序一编译,一下子就多了一兆
      

  5.   


    你说的是FastReport,还是Report Machine
      

  6.   

    我只会用 FastReport3.6版本的