zoukankan      html  css  js  c++  java
  • 將FastReport存入數據庫,讀出并更新

     

    以下代碼在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;

  • 相关阅读:
    上海某地产监控项目
    2020,8种必备Selenium编写自动化用例的技巧
    使用 Postman 做 API 自动化测试
    Python最火的第三方开源测试框架 ——pytest
    基于Appium的UI自动化测试
    4招了解前端单元测试
    你应该学会的接口调试神器——Postman高级用法
    分分钟玩转UI自动化测试
    Python Selenium 之数据驱动测试的实现
    python+requests接口自动化框架
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940801.html
Copyright © 2011-2022 走看看