Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Printing in threads

edited March 2004 in General
I am a newbie to Rbuilder (7.01 enterprise). I am building a server
that dynamically loads packages and does some task. One of these
packages loads a report and sends the output as an email attachment. I
am using a stored procedure in interbase to bring me the name of the
report and the template from RB_ITEM. I then use a JIT pipeline to
supply a call to Report.Template.LoadFromDatabase ;
The problem I'm having is that the jit pipeline does not raise any
events and just raises an error "record not found : xxx". I have no
idea what I'm doing wrong or if this is possible. Any advice would be
appreciated.

Regards,
Will.

Comments

  • edited March 2004


    ---------------------------------------------------------------
    Tech Tip: How to Programmatically Load Reports that were Saved
    using the Report Explorer
    ---------------------------------------------------------------

    1. The ReportExplorer has a run-time interface you can use to load reports
    using the ReportExplorer.LoadReport method. You can use this method without
    actually 'showing' the report explorer form. (See the online help topic for
    TppReportExplorer.)

    2. If you want use Report.Template.LoadFromDatabase, RB will locate the
    report stored in the database table based upon the NameField value only.
    However, for the rb_item table you need Folder_Id, Name to locate a record
    uniquely.

    To override this default behavior, assign an event-handler to the
    Report.Template.OnLocateRecord event.

    example:

    TmyForm = class(TForm)
    private
    function ReportLocateRecordEvent(Sender: TObject; const aReportName:
    String): Boolean;

    end;

    procedure TmyForm.FormCreate(Sender, TObject);
    begin
    {assign the event handler}
    FReport.Template.OnLocateRecord := ReportLocateRecordEvent;

    end;


    function TmyForm.ReportLocateRecordEvent(Sender: TObject; const aReportName:
    String): Boolean;
    begin
    {add logic here to locate the record and return True if it is found}

    Result := myLocateReportFunction(FFolderid, aReportname);

    end;



    --
    Nard Moseley
    Digital Metaphors
    http://www.digital-metaphors.com


    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.