將FastReport存入數據庫,讀出并更新

本文提供了一个详细的步骤指导,介绍如何使用FastReport组件在Delphi环境中完成报表的设计、存储及读取工作。具体包括将报表存入数据库、从数据库中读取报表及修改报表并更新到数据库的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

以下代碼在D7+ACCESS+FastReport 3.15版中測試通過.

1.將FastReport存入數據庫中:

在窗體的"Insert"按鈕的OnClick事件中插入下面代碼:
(Insert_rep: TADOQuery.設置SQL語句:select * from reportdata.
注:ReportData為放置數據庫的表,其中有字段ID(標志),REPORT(報表內容))
procedure TForm1.Button4Click(Sender: TObject);
var
template : TStream;
begin
template := TMemoryStream.Create;
template.Position := 0;
frxReport1.SaveToStream(template);
Insert_rep.Insert;
try
    Insert_rep.Active := true;
    Insert_rep.Edit;
    Insert_rep.DisableControls;
    Insert_rep.FieldByName('rptname').AsString := ExtractFileName(OpenDialog1.FileName);//報表名稱,作為報表數據的標志
    (Insert_rep.FieldByName('rptdata') as TBlobField).LoadFromStream(template);
    Insert_rep.FieldByName('uptime').AsDateTime := now;
    Insert_rep.Append;
    ShowMessage('Insert OK!');
finally
    Insert_rep.EnableControls;
    template.Free;
end;
end;

2.將報表從數據庫中讀取出來:
在Button的OnClick事件中添加下面代碼:
(qr_report: ADOQuery)
procedure TForm1.Button4Click(Sender: TObject);
var
template : TStream;
begin
try
    g_filename := ...;//報表名稱
    qr_report.Close;
    qr_report.SQL.Clear;
    qr_report.SQL.Add('select * from reportdata where id =:id');
    qr_report.Parameters.ParamByName('id').Value := g_filename;
    qr_report.Open;
    try
      template := qr_report.CreateBlobStream(qr_report.FieldByName('report'), bmRead);
      template.Position := 0;
      frxReport1.LoadFromStream(template);
    finally
      template.Free;
    end;
end;
end;

3修改報表,并寫入數據庫.
在frxDesigner1控件的OnSaveReport事件中,加入下面代碼:
(設計報表后,單擊報表中的 "save" 圖標,觸發該事件)
function TForm1.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var template : TStream;
begin
template := TMemoryStream.Create;
template.Position := 0;
frxReport1.SaveToStream(template);
qr_report.Edit;
try
    qr_report.DisableControls;
    (qr_report.FieldByName('Report') as TBlobField).LoadFromStream(template);
    qr_report.Post;
finally
    qr_report.EnableControls;
    template.Free;
end;
end;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值