smart Data Pump - Generic Output for Progress ADM2 Smart Data Objects · Index · Part 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · Expand · Web Feed


The smartDataPump was developed in a client/server project, where the users were moaning because the data delivered by a few thousands of smart data browsers weren't printable. Producing individual reports was no option, since the development team shrunk to a maintenance team without an expandable budget, and, from a technical point of view, this approach (although demanded) smells fishy.

I offered the concept exporting the browser data to a generic 'output device', got a go and developed my plan. While coding the output part, Steven Lichtenberg's and Geoff Crawford's article The Data Pump Process (local PDF) and Jeff Pilant's Temp Table Expositor were a great help. It was not possible to include their code, thus I hope I didn't violate their copyrights.

This said, what does the darn thing do?

Once plugged in into an application making use of the Progress® ADM2 framework, the smartDataPump can be called with the handle of a running smart data object (SDO) and creates a report from the current query. Users can define stored reports based on the data the SDO could deliver. That means, users get access to all instances of persistent attributes represented by the RowObject temp table, as long as the developer didn't filter them out. 'Could deliver' means, that the smartDataPump fetches all values from the database, regardless how small the bunch of records currently hold by the RowObject temp table is. The pointer to the current row in the SDO/browser/viewer is not touched, returning from the smartDataPump the user finds his screen unchanged. The user can suppress attributes, change the field order, enter low and high values per attribute to limit the output, and choose the output format.

How does the smartDataPump work?

During the install process, the smartDataPump has added a sequence and two tables to the first connected database (respective DICTDB) to store it's default parameters, strings by language (messages, widget labels/tooltips/screen-values, output constants) and more. These tables are used to store user defined reports, identified by the SDO's relative file name and report titles.

The smartDataPump is started by the client, usually launched by a CTRL-O trigger added to the smart data browser class, a button or whatever. It has one input parameter, the handle of the browser's or viewer's SDO (SdoHandle = DYNAMIC-FUNCTION("GetDataSource":U)).

If the SDO is running on an application server, the smartDataPump creates an instance of itself on the SDO's AppServer. This ensures all startup parameters like connected databases etc. remain the same on the server side. Once running in 'shared C/S mode', database accesses get handled by the AppServer instance of the smartDataPump. If the SDO is running locally, the client needs access to all databases involved.

Now the smartDataPump extracts all buffers (database tables) and the current (even filtered) query from the SDO and offers all attributes defined in the SDO (RowObject temp table) to the user. Depending on the user's input, the smartDataPump defines a dynamic temp table with the selected fields, which is (usually) populated by the AppServer and then copied to the client. This dynamic temp table contains only records matching the user's selection per attribute (low value and/or high value, Null (unknown) allowed yes/no) and only the selected attributes in the field order the user has defined (defaulted by the RowObject's field order).

Once the dynamic temp table is received from the AppServer, the output part is done on the client side. The user can select the application launched to open the output, depending on the output format (from a maximum of 15 applications per format). After launching the external application with the outputted data, the smartDataPump deletes itself on the client and the AppServer as well, freeing all allocated resources.

The default output format is HTML, because usually a web browser is installed on every client machine. The smartDataPump creates printable HTML. That means, headings are repeated on each printed page (works at least with IE5+ and Mozilla, more info here: The World Wide Web Consortium (W3C) Wish List on Printing HTML Documents).



License and DownloadNext Page


smart Data Pump - Generic Output for Progress ADM2 Smart Data Objects · Index · Part 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · Expand · Web Feed



Author: Sebastian
Last Update: May 2005   Web Feed

· Home

· Products

· smartDataPump

· Web Links

· Link to us

· Contact

· What's new

· Site map

· Get Help


Most popular:

· Site Feeds

· Database Design Guide

· Google Sitemaps

· smartDataPump

· Spider Support

· How To Link Properly


Free Tools:

· Sitemap Validator

· Simple Sitemaps

· Spider Spoofer

· Ad & Click Tracking



Search Google
Web Site

Add to My Yahoo!
Syndicate our Content via RSS FeedSyndicate our Content via RSS Feed



To eliminate unwanted email from ALL sources use SpamArrest!






Digg this · Add to del.icio.us · Add to Furl · We Can Help You!




Home · Categories · Articles & Tutorials · Syndicated News, Blogs & Knowledge Bases · Web Log Archives


Top of page

No Ads


Copyright © 2004, 2005 by Smart IT Consulting · Reprinting except quotes along with a link to this site is prohibited · Contact · Privacy