我的代码,运行到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;
请问是什么问题
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;
请问是什么问题
{ }
{ 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};
这一句就是显示错误信息的,你加了判断实际上就是把你的程序错误的地方隐藏了,治标不治本
要是那天重新装了frx忘记了修改源代码,错误一样存在frxResources不用判断,源代码在调用时已经判断了,不存在会自动创建
ReportRef就是frxDBDataset关联的frxReport1所以修改方法:报表中用到frxDBDataset要设置它的DataSet属性为ADOQuery或者其它数据集
恩,那个报表很简单,就是打印一个单据,不知道是不是没有 放DataMaster的原因,我直接把字段拖到Page上边,先改改试试吧
顺便问下,包含Report Machine 报表的程序发布,需要些什么东西,比如带个什么包?昨天用了一下Report Machine ,程序一编译,一下子就多了一兆
你说的是FastReport,还是Report Machine