Print report in a thread
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
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
This discussion has been closed.
Comments
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
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
see component ' TppArchiveReader'.
regards,
Chris Ueberall;
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
sorry, but I should had read the whole thread. I wasn't aware about your scenario.
regards,
Chris Ueberall;
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com