关于FASTREPORT 急!!! 急!!! 急!!! 急!!! 急!!! 急!!! 急!!! 急!!! (300分)

1,不知道怎么把运行时设计的*.FRF保存到数据库,(保存代码?保存代码在那里写??)
2,怎么取??????
 
1:数据库:一个Integer字段,一个Blob型字段,一个string字段(报表名)
2.读报表
table1.Locate('ReportName', ('第一个报表'), [loCaseInsensitive]);
//定位记录
frReport1.LoadFromBlobField(table1.FieldByName('Report');
3.保存到数据库
table1.Locate('ReportName', ('第一个报表'), [loCaseInsensitive]);
//定位记录
table1.Edit;
frReport1.SaveToBlobField(table1.FieldByName('Report');
table1.Post;
 
// *******************************************//
// function : 保存报表文件到数据库中
// Author : Wangdawei
// Modify Date :2002-01-24
// *******************************************//
function TfrmXtQuery.SaveRptToDatabase(const FileName,
SqlCode: string): Boolean;
begin
Result:=true;
with TQuery.Create(Self)do
try
try
DatabaseName:=SysDatabase.DbMis.DatabaseName;
SQL.Add('Update tXtDefScript');
SQL.Add(' Set RptDesign=:pContent');
SQL.Add(' Where SqlCode=:pSqlCode');
ParamByName('pSqlCode').AsString:=SqlCode;
ParamByName('pContent').LoadFromFile(FileName,ftBlob);
ExecSql;
except
on E:Exceptiondo
begin
UWriteErrLog('Xt',Self.Caption,E.Message);
UErrorMsgBox('查询报表设计文件出错,请查看出错日志!');
Result:=false;
end;
end;
finally
Free;
end;
end;

// *******************************************//
// function : 导出报表文件
// Author : Wangdawei
// Modify Date :2002-01-24
// *******************************************//
function TfrmXtQuery.GetRptToFile(Const FileName,SqlCode: string): Boolean;
begin
Result:=true;
with TQuery.Create(Self)do
try
try
DatabaseName:=SysDatabase.DbMis.DatabaseName;
SQL.Add('Select RptDesign');
SQL.Add('From tXtDefScript');
SQL.Add('Where SqlCode=:pSqlCode');
ParamByName('pSqlCode').AsString:=SqlCode;
Open;
if not eof then
begin
if TGraphicField(FieldByName('RptDesign')).IsNull then
begin
frReport.SaveToFile(FileName);
end
else
begin
TGraphicField(FieldByName('RptDesign')).SaveToFile(FileName);
end ;
end ;
except
on E:Exceptiondo
begin
UWriteErrLog('Xt',Self.Caption,E.Message);
UErrorMsgBox('查询报表设计文件出错,请查看出错日志!');
Result:=false;
end;
end;
finally
Free;
end;
end;

 
一个*.FRF 大概有个十几K 吧
一个BINARY顶多才8K
能存吗??
BLOB到底是指那种IMAGE还是BINARY,还是指别的东西
 
to macrowdw,whf :
非常感谢两位的回答!!
 
1,该怎么才能将在运行时设计的报表保存(保存代码?)
2,保存代码写在哪里?
 
首先必须在设计器里保存修改后的报表。
在关闭后,马上加入将报表文件存入数据库的代码。
可参看 WHF 大虾 的代码,他可是报表界的高手。ReportMachine 就是他的作品。
 
VGA太抬举我了,抄段说明
Q: Same situation. I want to define my reaction of "Open" and "Save"
buttons in designer.
A: Look at TfrDesigner component. It has necessary events: OnLoadReport and
OnSaveReport. Here is a small example:
procedure TForm1.frDesigner1SaveReport(Report: TfrReport;
var ReportName: String;
SaveAs: Boolean;
var Saved: Boolean);
begin
if not SaveAs then
begin
Saved := True;
Report.SaveToBlobField(...);
end
end;
 
都急4天了
 
保存代码写在TFrDesigner的OnSaveReport中。我一般将一个模块的所有报表保存在一个BLOB字段中。
 
whf的方案可以用的。我就是这么用的
 
多人接受答案了。
 
在fasreport中使用SaveToBlobField与LoadFromBlobField方法
为什么我会报告一个invalid class typecast的错误
 
顶部