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

Print report in a thread

edited February 2003 in General
Hi all,
I use d6, rb6, pragnaan export filters (for exporting to html, pdf,
word...).
RB is used in an ISAPI dll which is an IntraWeb application.
Is it possible to print a report builder report in a thread (using pragnaan
exports)?
I need to run the report in a thread in order to enable the user to stop the
report production.
In the thread I need to refer to some Intraweb Session variables and
eventually call the Exportxxx function of pragnaan (xxx is the export file
format), which calls RB to produce the report. The report itself gets it's
data from ADO datasets.

I hope it's both clear and no to complicated to be answered.

Thanks in advance
Israel

Comments

  • edited February 2003

    ReportBuilder 7 Server Edition does this, please see the following Live
    Demo:

    http://www.digital-metaphors.com/RBServerLive


    ReportBuilder 7 is the first version of RB that is thread-safe, therefore
    you need to update to RB 6. You may want to consider updating to RB 7 Server
    Edition. See more info below.



    -----------------------------------------------------------
    R B S E R V E R E D I T I O N
    -----------------------------------------------------------


    Live Demo!
    ----------

    http://www.digital-metaphors.com/RBServerLive


    Trial Edition
    --------------

    http://www.digital-metaphors.com/server/TrialEdition.html




    Server Edition Overview
    ------------------------
    The Server Edition makes it easy to create and deploy report applications to
    the web. Using basic component configuration you can get a Windows
    service-based report server application up and running, a web application up
    and running, and have users previewing reports in a web browser in no time.
    And you can do it all without having to master multi-threaded programming,
    Windows Services, Windows Sockets, Windows System Tray applications, COM,
    I/O Completion Ports/Worker Thread Pools, XML, SOAP Services, ISAPI Thread
    Pools, XHTML, or JavaScript. Sound interesting? Then read on...


    1. ReportBuilder Services

    ReportBuilder Services is a Windows service designed to act as a host to a
    report server application. This two-piece architecture isolates a report
    server application in its own process, allowing it to be started and stopped
    from the service. By default, the service is configured to start
    automatically each time the server machine boots. Once the service is
    started, it launches the report server application. The service is also
    configured to automatically restart the report server application in the
    event of a crash.

    To install ReportBuilder Services, you simply run the included
    RBWinService.exe installation program. The program installs and starts the
    Windows service and deploys a server management application, accessible from
    both a system tray icon and a Start menu item. You can then access the
    management application and point the Windows service to the location of your
    report server application.


    2. Report Server Component

    The Report Server component implements a multi-threaded report server that
    can execute reports and deliver report pages to clients. You build a report
    server application by dropping a ReportServer component on a Delphi form,
    creating data modules which contain ReportVolume components (explained next)
    and compiling the application. And that's it; you can build an entire server
    application without writing any code. Once the application is built you can
    then use ReportBuilder Services to quickly and easily designate it as the
    official report server.

    The Report Server is implemented using an I/O completion port/worker thread
    architecture that optimally manages persistent report sessions to maximize
    performance and throughput. The server can generate reports incrementally
    (that is, page-by-page) in order to optimize response time. Pages are cached
    on the server and on the client to minimize network traffic. The amount of
    time that passes before a session expires (and the cache is cleared) can be
    controlled via the TimeOut property.


    3. Report Volume Components

    Report Volume components are used to register a collection of reports with
    the server. The server uses a report catalog to build and store the tree
    structure which forms as the various reports are registered.

    There are several types of report volume components, one for each of the
    ways that reports are most commonly deployed. For report templates stored in
    file directories or database tables, there is the ReportTemplateVolume. For
    reports stored in the Explorer database structure (i.e. RB end-user
    reports), there is the ReportExplorerVolume. For report archives stored in
    file directories or database tables, there is the ReportArchiveVolume. For
    reports stored on a Delphi form, there is the "behind-the-scenes" report
    volume object. The bottom-line: wherever or however your reports are
    deployed, there is a simple way to register them with the server, usually
    without writing a single-line of code.

    Report volumes are also dynamic; as you add reports to a designated file
    directory or database storage medium, the report server will automatically
    add or remove those reports from the catalog. Yes, this does mean that you
    can deploy reports to the server without bringing the server down.


    4. Windows Rich Client Components

    With one ClientReportExplorer, one ClientReport, and one line of code, you
    can build a full-featured Delphi reporting application which provides access
    to reports on a remote server. The ClientReportExplorer uses a Windows
    Explorer style interface to display a folder tree structure of available
    reports. The ClientReport makes it easy to preview and print. When
    previewing a report that requires search criteria, the AutoSearch dialog is
    automatically displayed and any search values entered are returned to the
    server. The report is then generated and pages are returned.


    5. WebTier Component

    When compiled as part of a web application, the web tier acts as a middle
    tier, providing access to a report server application from a web browser. A
    user may select reports from a folder tree structure, enter search criteria
    when applicable and preview report pages from the web browser. All of these
    capabilities are made possible via a zero-client application (100%
    JavaScript/XHTML) generated by the web tier. The zero-client is compatible
    with Netscape 4, Netscape 6, and Internet Explorer (5 and 6.)

    Designed to integrate seamlessly with Delphi's various web technologies, the
    web tier requires only a single line of code to compile successfully as part
    of an ISAPI DLL or Apache Shared Module. ASP is also a snap, as a single COM
    interface (easily generated with the help of Delphi's ActiveX support) is
    all that is needed to deploy the web tier as part of an Active Server Page.

    The web tier implements a sophisticated concept of "session", grouping all
    of the communications received from a single web browser under a single
    session object. In order to optimize performance, both the state of the
    session, and any report output generated for the session are cached. For
    example, assume a user previews report A, then report B, then returns again
    to report A. The web tier would manage all of this activity as a single
    session, and whenever possible, would return pages from the session cache,
    instead of re-requesting them from the report server application. The amount
    of caching which occurs, the TimeOut for a session and the frequency with
    which garbage collection is performed on expired sessions are just a few of
    the configuration options available on the web tier.

    Implemented as a set of Delphi classes, the WebTier consists primarily of
    objects which descend from TrsWebContentProvider. Web content providers
    communicate with the report server application, converting the response from
    SOAP/XML to native Delphi objects to XHTML/JavaScript, suitable for
    consumption by a web browser. The content providers included in the Server
    Edition make it easy to provide a complete, robust, and professional web
    reporting solution right out of the box. You can customize the HTML created
    by the web tier by creating your own content provider descendants.


    6. RB ISAPI Thread Pool

    The Server Edition includes a custom ISAPI thread pool, implemented using an
    I/O completion port/worker thread architecture designed to optimally manage
    incoming requests. The thread pool queues requests based on session, and can
    eliminate redundant requests. This greatly improves both throughput and
    performance, as the web tier passes only relevant requests through to the
    report server application.


    7. Server Farm

    The web tier can be configured to utilize any number of report servers to
    maximize scalability. This allows the web tier to scale gracefully as a
    greater number of users access reports. There are two load balancing options
    provided: Round Robin and Minimum Load. Round Robin simply steps through a
    list of servers, each time returning the next server in the list. Minimum
    Load checks the CPU usage of each server (based on a sixty second moving
    average), and returns the server with the minimum usage.


    8. Documentation, Help & Examples

    The Server Edition Developer's Guide is provided in PDF format. The concepts
    behind the web server are covered, along with numerous step-by-step
    tutorials that guide you through everything from creating a report server
    application to deploying the web tier with a server farm. The online help is
    a reference for all of the components and major classes which make up the
    product. The help is integrated with the Delphi help and is accessible via
    the help menu or the F1 key. Numerous examples of report server
    applications, web applications and client applications are also provided.




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

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited February 2003
    Thank you for the lengthy answer, although it's an answer only if I'll
    upgrade.

    I solved the problem, which is really a pragnaan exportdevices problem. They
    use GLOBAL variables.
    However it's possible to compile the package using a define they supply so
    that the globals are eliminated.
    Not very nice but works. If anyone has the same problem I'll be happy to
    help.


    I have a question raised earlier and still unanswered.
    Is it possible to produce a report to a file in the native RB format, and
    use something like the RB previewer to see and print it on the client
    machine? I used another report writer that used this method with an activex
    viewer/printer I could use in the client browser.
    Is that approach possible with RB (6 or 7)?

    Best regards
    Israel


  • edited February 2003
    Hi Israel,


    see component ' TppArchiveReader'.

    regards,
    Chris Ueberall;
  • edited February 2003
    Hi, question. Is also Reportbuilder Enterprise 7.01 threadsave?
    chris

  • edited February 2003
    Hello Chris,
    How would I use TppArchiveReader on a client machine? All I have there is a
    browser.
    if TppArchiveReader was packaged as an ActiveX, I could use it. Making it an
    ActiveX myself seems like to much.

    Any other idea?

    BTW is an archive file really smaller then an rtf or pdf file?

    Thanks
    Israel

  • edited February 2003
    Israel,

    sorry, but I should had read the whole thread. I wasn't aware about your scenario.

    regards,
    Chris Ueberall;
  • edited February 2003
    Yes.

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

    Best regards,

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