WO2005072140A2 - Method and apparatus to perform client-independent database queries - Google Patents

Method and apparatus to perform client-independent database queries Download PDF

Info

Publication number
WO2005072140A2
WO2005072140A2 PCT/US2005/001243 US2005001243W WO2005072140A2 WO 2005072140 A2 WO2005072140 A2 WO 2005072140A2 US 2005001243 W US2005001243 W US 2005001243W WO 2005072140 A2 WO2005072140 A2 WO 2005072140A2
Authority
WO
WIPO (PCT)
Prior art keywords
report
query
font
paddi
output file
Prior art date
Application number
PCT/US2005/001243
Other languages
French (fr)
Other versions
WO2005072140A3 (en
Inventor
Caitlyn Harts
Douglas Harts
Asim Pandey
Original Assignee
Caitlyn Harts
Douglas Harts
Asim Pandey
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Caitlyn Harts, Douglas Harts, Asim Pandey filed Critical Caitlyn Harts
Publication of WO2005072140A2 publication Critical patent/WO2005072140A2/en
Publication of WO2005072140A3 publication Critical patent/WO2005072140A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Definitions

  • the present invention pertains to databases and querying of databases. More particularly, the present invention pertains to methods and apparatus to perform client-independent database queries utilizing an object model to generate a report definition output file.
  • RDL Report Definition Language
  • Microsoft Corporation has developed a Report Definition Language (RDL) to promote the interoperability of available report applications by defining a common schema that allows interchangeability of report definitions.
  • Microsoft Corporation has published a Report Definition Language Specification enabling developers to implement RDL in a variety of applications.
  • RDL Report Definition Language
  • the invention provides methods and apparatus that allows the implementation of a standard report definition language in the development of report applications, and specifically those report applications intended to provide client- independent database inquires.
  • the invention provides an object model configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
  • the report definition output file is preferably an RDL output file based on the Report Definition Language Specification published by Microsoft Corporation. It will be understood by those skilled in the art, however, that the invention is applicable to any type of report definition specification that provides interoperability.
  • an object model wrapper is utilized to provide an interface to the object model for the user selections. Accordingly, frequently utilized query elements can be predefined by the object model wrapper to provide a short-cut for programmers.
  • the object model wrapper effectively operates as an object model to the object model or a wrapper around the object model, whereby a single instruction or element supplied to the object model wrapper is expanded to a plurality of instructions or elements. Thus, particularly for frequently used elements, the number of entries required to be made by the programmer is reduced.
  • the object model and object model wrapper preferably constitute elements of a query model.
  • the query model further includes a base code module coupled to the object module and the object model wrapper, wherein the base code module receives user selections and provides the user selections to the object model wrapper and receives the report definition output file from the object module.
  • the query model is preferably implemented in a database query system.
  • the database query system includes an internet information server, wherein the internet information server receives user selections from and provides information to clients.
  • the query module is interfaced with the internet information server, wherein the query module includes an object model configured to receive the user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
  • An XML engine is interfaced with the query module, wherein the XML engine receives a report definition output file from the query module that is processed by the XML engine to generate a report in a desired format.
  • the database query system includes a web programming tool set module interfaced with the query module, wherein the query module utilizes the web programming tool set module to generate user interface screens that are supplied to the clients via the internet information server.
  • a network is also preferably coupled to the internet information server to interface the internet information server to the clients.
  • the invention also provides a method of providing a database query that includes: receiving user selections that specify query criteria for a desired query; building a query instruction set based on the user selections; utilizing an object model to generate report definition output file representative of an XML expression of a report based on the Query instruction set; supplying the report definition file to an XML engine; and processing the report definition output file with the XML engine to produce query results in the form of a report.
  • the processing of the report definition output file with the XML engine preferably includes retrieving from a database information matching the query criteria specified by the user selections and reflected in the report definition output file.
  • the query criteria can be tested first before running the query to generate a report, by utilizing the Query instruction set to directly interrogate a database to determine the number of records that meet the query criteria, and providing to a user an indication of the number of records that would result from the running of the desired query.
  • a machine readable medium may also be encoded with machine instructions in accordance with the instructions, wherein the machine instructions include an object model configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
  • the machine instructions include an object model configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
  • FIG. 1 is a diagram of an example client/server system
  • FIG. 2 is a diagram providing additional detail regarding one example manner in which the server of FIG. 1 may be implemented
  • FIG. 3 is a diagram providing additional detail regarding one example manner in which the query module of FIG. 2 may be implemented
  • FIG. 4 is a relationship diagram illustrating example interaction among the various entities of FIG. 3
  • FIG. 5 is an example code segment representing the base code of FIG. 3
  • FIG. 6 is an example code segment representing the RDL object model wrapper code of FIG. 3
  • FIG. 7 is an example code segment representing the RDL object model of FIG. 3
  • FIG. 1 is a diagram of an example client/server system
  • FIG. 2 is a diagram providing additional detail regarding one example manner in which the server of FIG. 1 may be implemented
  • FIG. 3 is a diagram providing additional detail regarding one example manner in which the query module of FIG. 2 may be implemented
  • FIG. 4 is a relationship diagram illustrating example interaction among the various entities of FIG. 3
  • FIG. 5 is an example code
  • FIG. 8 is a diagram illustrating one manner in which the RDL object model of FIG. 3 may be implemented;
  • FIG. 9 is a diagram of an example hardware system that may be used to implement the server of FIG. 1;
  • FIG. 10 is a flow diagram of an example query-by-example process that may be implemented by instructions carried out by the example hardware system of FIG.
  • FIG. 11 is a flow diagram of an example run report process that may be implemented by instructions carried out by the example hardware system of FIG. 9;
  • FIG. 12 is a screen-shot of an example user interface that may be provided to the client by the server of FIG. 1 ;
  • FIG. 13 is a screen-shot of an example user interface showing additional detail regarding available Views of a selected data source;
  • FIG. 14 is a screen-shot of an example user interface showing additional detail provided to the client to customize the query upon selection of the Sales Totals by Amount (dbo) view;
  • FIG. 15 is a screen-shot showing the results of user customization of the query;
  • FIG. 16 is a screen-shot showing the results of a user requesting a record count of the query customized as shown in FIG. 15;
  • FIG. 17 is a screen-shot showing the results of a user requesting a run of the query customized as shown in FIG. 15; and
  • FIG. 18 is a screen-shot showing the results of a user selecting the Select a format drop
  • a computing network 100 may include a server 102 having an associated database 104.
  • One or more clients 106, 108 may be coupled to the server 102, either directly (as in the case of the client 106) or through a network 110 (as in the case of the client 108).
  • the computing network 100 which is configured as described herein, allows one or more users to operate one or more clients (e.g., the clients 106 or 108) to access data from the database 104 via the server 102.
  • users at the clients e.g., the clients 106 and/or 108 will be able to create ad hoc, customized reports of data in the database 104 without the need to install special client software or without requiring the help of database administration personnel.
  • the clients e.g., the clients 106, 108
  • the clients have Internet connectivity and a web browser such as Microsoft Internet Explorer or any other suitable software.
  • a web browser such as Microsoft Internet Explorer or any other suitable software.
  • non-technically oriented employees will be able to run custom queries using a query-by-example (QBE) paradigm.
  • QBE query-by-example
  • employees will be able to access data and run custom reports and queries from anywhere in the world, provided the employees have access to an Internet connection and an Internet browser.
  • the server 102 may implement a structured query language (SQL) database software package or any other suitable software package such as, for example, DB2, Oracle, and/or Informix.
  • SQL structured query language
  • the server 102 also includes other software functionality that makes it possible for clients having only a web browser to access and run custom reports.
  • the server 102 may be implemented using any suitable and commercially available server computing system that may be available from, for example, Dell, IBM, etc. Further detail regarding the hardware configuration of the server is provided below.
  • the database 104 may reside within the server 102 or may be implemented apart there from.
  • the database 104 may be implemented on a mass storage device that is built within the server 102.
  • the database 104 may be implemented using any suitable data source such as, for example, a Microsoft Excel spreadsheet or a text repository.
  • the clients 106, 108 may be implemented using any computing system.
  • the clients 106, 108 may be implemented using desktop or laptop computer systems.
  • the clients 106, 108 require no special software functionality.
  • the clients 106, 108 may include only web browsing software. Additionally, such web browsing software need not include any special plug-ins or software add-ons. Clients configured with operational web browsers are enabled via the disclosed system to create and run reports on the information on the database 104.
  • the network 110 may be implemented using any suitable configuration.
  • the network may be implemented using a local area network (LAN), a wide area network (WAN), or any other network arrangement.
  • the network 110 may be implemented using the Internet.
  • the Internet is an international network linking a vast number of computer nodes to one another.
  • the client 108 could be located on, for example, the west coast of the United States and the server 102 could be located on, for example, the east coast of the United States.
  • a user at the client 108 would be able, through the Internet, to access the server 102 and the database 104.
  • the user at the client would be able to perform ad hoc reporting using real-time data stored in the database 104.
  • the Server System The Server System
  • FIG. 2 illustrates one server system 200 in which the server 102 may be implemented.
  • the server system 200 includes an Internet information server (IIS) 202 that is coupled to an ASP.NET module 204 and that receives information from and provides information to clients (e.g., the clients 106, 108 of FIG.1).
  • the IIS 202 is further coupled to a query module 206 that is also coupled to a SQL server extensible markup language (XML) consumer engine (XML engine) 208. Both the query module 206 and the XML engine 208 are coupled to a database (e.g., the database 104 of FIG. 1).
  • the IIS 202 is the uniform resource locator (URL) address at which the query module 206 may be found.
  • URL uniform resource locator
  • IIS is from the Microsoft vernacular, those having ordinary skill in the art will readily recognize that other services may be used such as, for example, Apache in the UNIX domain. Alternatively, any suitable web server may be used to implement certain functionality performed by the IIS 202.
  • the ASP.NET module 204[MCZ1] is a Microsoft web programming tool set and development platform.
  • the query module 206 may use the ASP.NET module 204 to generate user interface screens that provide users the ability to customize queries. While the ASP.NET module 204 is shown as being one example, those having ordinary skill in the art will readily recognize that other components such as Java 2 Enterprise Edition may be used.
  • the query module 206 receives user-generated query information from the clients (e.g., the clients 106, 108) and processes the query information, as described below, to form RDL code/instructions representing the query information.
  • the RDL code is then passed to the XML engine 208, which queries the database and returns a record set that will be displayed to a user.
  • the XML engine 208 is a XML manipulation engine that receives XML and performs queries on one or more databases or data sources, to obtain data there from. Further, the XML engine 208 formats the data and returns the query results in HTML, MHTML (Microsoft hypertext markup language), PDF (portable document format), or any other suitable format.
  • the XML engine 208 manipulates XML that is compatible with the report definition language (RDL) specification, second draft, prepared by Microsoft and dated March 31 , 2003, or any subsequently specified RDL specification.
  • RDL report definition language
  • the Microsoft report definition language specification, dated March 31 , 2003 is incorporated by its entirety herein.
  • the IIS 202 receives query information from the browser operating on the client and passes the query information to the query module 206, which may directly interrogate a database (e.g., the database 104) and may respond to the client with relevant information.
  • the query module 206 upon receiving user-generated query information, may perform some processing and invoke a web-service call to the XML engine 208.
  • the web-service call may include an RDL set of language instructions that will be interpreted by the XML engine 208 and used by the XML engine 208 to extract information from the database.
  • the extracted information which may be referred to as extracted records, is passed back to the client in a format that is easily readable by the client.
  • the results of the query i.e., the resulting record set
  • the example query module 300 includes base code, which may also be referred to at user interface (Ul) code 302, an RDL object model wrapper 304, an RDL object model 306, and a WEB.CONFIG file 308.
  • the base code 302 may also be coupled to a database 310, which may be implemented using the database 104 of FIG. 1.
  • the RDL object model 306 is a software construct that is configured to receive the user selections and convert the user selections into an RDL output file that may be processed by the XML engine (e.g., the XML engine 208 of FIG. 2). Further detail pertinent to each of the base code 302, the RDL object model wrapper 304, and the RDL object model 306 are their interaction is provided below.
  • the base code 302 receives user query information from a client.
  • the user at a client may be presented with a webpage-like user interface into which the user may provide his/her query criteria.
  • these user selections are provided to the base code 302.
  • the user interface provided to the user via the client is updated by the base code so that the user may constantly view the current state of the query and user selections.
  • the user may be able to test the query selections that he/she has made.
  • the user instructs the base code 302 to interrogate the database 310.
  • the results of the database interrogation are provided back to the base code 302, which, in turn, passes the results to the user at the client via a series of user interface screens.
  • the object model wrapper 304 provides a programming interface to the RDL object model 306 and, therefore, requests the RDL object model 306 to create an RDL table 408.
  • the programming interface provided by the object model wrapper 304 may simplify the manner in which programmers access the RDL object model 306, by essentially providing a short-cut to commonly utilized query criteria. In effect, the RDL object model wrapper 304 acts as an object model within an object model.
  • the user may opt to add fields to the table data region that was previously created 410.
  • the RDL object model wrapper 304 may request the RDL object model 306 to add table columns 412, to add header rows 414, to add detail rows 416, and/or to set dataset names 418.
  • the user may request an RDL document 420 reflecting the specified query information.
  • the RDL object model 306 will be serialized into an RDL XML document 422 that is provided to the base code 302.
  • the serialized RDL document is passed to the XML engine 208, as shown at reference numeral 424.
  • the XML engine 208 processes the serialized RDL document including the query and returns query results formatted as an HTML, MHTML, or any other suitable formatted result set for display to the user 426.
  • the WEB.CONFIG file 308 may store various portions of information related to the base code 302.
  • the WEB.CONFIG file 308 may store data source connection information and may store the names of tables, view, and stored procedures that may be viewed by a user.
  • the base code 302 may access a database to determine the identities of a number of different tables, views, and/or stored procedures that may be accessed by a user. Before all of the tables, views, and/or stored procedures are presented to a user, the base code 302 may access the WEB.CONFIG file 308 to determine which of the items should be displayed to the user. For example, one or more views may be kept from the user through filtering performed by the base code 302 based on information stored in the WEB.CONFIG file 308. Additionally, the WEB.CONFIG file 308 may be used to define security settings for the base code 302.
  • the WEB.CONFIG file 308 may define whether a user is required to login to obtain access to the functionality provided by the base code 302. Further, the WEB.CONFIG file 308 may be used to store user queries that need not be stored in the database on the server. Of course, user queries and/or application settings stored in the WEB.CONFIG file 308 could alternatively or additionally be stored within the database.
  • FIGS. 5A-5E illustrate example portions of base code 500.
  • the base code 500 is the interface between the user and an RDL object model wrapper 600 of FIG. 6.
  • the RDL object model wrapper 600 receives requests from the base code 500 and passes some or all of those requests to an RDL object model 700 of FIGS. 7A-7D.
  • the following example operation is provided in the context of the need to create a table data region. Accordingly, the example calls made to the RDL object model wrapper 600 and the RDL object model 700 are made to fulfill the addition of the table data region to a report.
  • the following is merely one example of how the base code 500, the RDL object model wrapper 600, and the RDL object model 700 interact.
  • the execution of the base code 500 begins as defined in FIG. 5A and continues execution until a call to the RDL object model wrapper 600 is reached.
  • the call to the RDL object model wrapper 700 is represented by the line of code indicated by reference numeral 502.
  • the base code 500 calls an AddBlankRegion routine, which resides within the RDL object model wrapper 600.
  • the RDL object model wrapper 600 of FIG. 6 begins execution at the top of the code listing due to the call into the AddBlankRegion routine.
  • the RDL object model wrapper 600 executes a number of lines of code and then reaches the code denoted by reference numeral 602, which is a new table call to the RDL object model 700.
  • the RDL object model 700 begins execution at a public class Table: DataRegion line of code denoted at reference numeral 702.
  • Each of the remaining lines of code shown in FIGS. 7A-7C are executed until the line of code denoted with reference numeral 704 is reached, at which point control returns to 602 of FIG. 6.
  • the RDL object model wrapper 600 continues its execution from line 602 until it reaches a line denoted at reference numeral 604, which instructs the RDL object model wrapper 600 to return the generated table data region to the calling routine, which is the base code 500 at line 502.
  • FIG. 8 a representation of an RDL object model shows various classes that collectively define the RDL object model.
  • FIG. 8 is shown as being an object-oriented model class diagram representing hierarchical and relational grouping of programming constructs.
  • Each of the blocks shown in FIG. 8 includes a title portion in which the name of the class is displayed, a variable location that describes the state of the object. Below the variable location is a methods and properties location that defines behavior of the class.
  • the RDL object model includes Report 802, Reportltems 804, Reportltem 806, and ReportltemType 808 classes.
  • the Reportltem 806 class is linked to DataRegion 810, Image 812, and Textbox 814 classes.
  • the DataRegion 810 class is further linked to Table 816 and Chart 818 classes.
  • PageFooter 820 and PageHeader 822 classes provide information to a PageHeaderFooterType 824 class.
  • the RDL model further includes DynamicSeries 826, DynamicCategories 828, and Body 830 classes.
  • the relationships or links between the various classes define how classes will inherit traits from other classes.
  • the Table 816 class inherits its traits from the DataRegion 810 class, which inherits its traits from the Reportltem 806 class.
  • the RDL object model of FIG. 8 may include various other classes that are yet to be defined, but will be substantially completely compatible with the RDL specification.
  • an example processor system 900 that may be used to implement the server 102 of FIG. 1 includes a processor 902 having associated memories 904, such as a random access memory (RAM) 906, a read only memory (ROM) 908, and a flash memory 910.
  • the processor 902 is coupled to an interface, such as a bus 920 to which other components may be interfaced.
  • the components interfaced to the bus 920 include an input device 922, a display device 924, a mass storage device 926, and a removable storage device drive 928.
  • the removable storage device drive 928 may include associated removable storage media (not shown), such as magnetic or optical media.
  • the processor system 900 may also include a network adapter 930.
  • the processor 902 may be any type of processing unit, such as a microprocessor from the Intel family of microprocessors. Alternatively, the processor 902 may be implemented using any other suitable processor technology.
  • the memories 904 that are coupled to the processor 902 may be any suitable memory devices and may be sized to fit the storage and operational demands of the system 900.
  • the flash memory 910 may be a nonvolatile memory that is accessed and erased on a block-by-block basis and that stores instructions that cause the processor 902 to perform various actions.
  • the input device 922 may be implemented using a keyboard, a mouse, a touch screen, a track pad or any other device that enables a user to provide information to the processor 902.
  • the display device 924 may be, for example, a liquid crystal display (LCD) monitor, a cathode ray tube (CRT) monitor or any other suitable device that acts as an interface between the processor 902 and a user.
  • the display device 924 includes any additional hardware required to interface a display screen to the processor 902.
  • the mass storage device 926 may be, for example, a conventional hard drive or any other magnetic or optical media that is readable by the processor 902.
  • the removable storage device drive 928 may be, for example, an optical drive, such as a compact disk-recordable (CD-R) drive, a compact disk-rewritable (CD-RW) drive, a digital versatile disk (DVD) drive, or any other optical drive.
  • the removable storage device drive 928 may alternatively be, for example, a magnetic media drive. If the removable storage device drive 928 is an optical drive, the removable storage media used by the drive 928 may be a CD-R disk, a CD-RW disk, a DVD disk, or any other suitable optical disk. On the other hand, if the removable storage device drive 48 is a magnetic media device, the removable storage media used by the drive 928 may be, for example, a diskette or any other suitable magnetic storage media.
  • the network adapter 930 may be any suitable network interface such as, for example, an Ethernet card, a wireless network card, a modem, or any other network interface suitable to connect the processor system 900 to a network 932.
  • the network 932 to which the processor system 900 is connected may be, for example, a local area network (LAN), a wide area network (WAN), the Internet, or any other network.
  • LAN local area network
  • WAN wide area network
  • the Internet or any other network.
  • the network could be a home network, an intranet located in a place of business, a closed network linking various locations of a business, or the Internet.
  • FIG. 10 is a flow diagram representing example instructions that may be carried out by the hardware of FIG. 9 to enable a user at a client to perform a query- by-example building process 1000.
  • Instructions implementing the query-by-example (QBE) process 1000 may be stored and executed by a server (e.g., the server 102 of FIG. 1).
  • the process 1000 begins by receiving user selections that specify query criteria (block 1002).
  • the query criteria may be specified using fields, drop down boxes, check boxes, radio buttons, or any other suitable user interface techniques that enable a user at a client to make query criteria selections using web-based user interface techniques.
  • the process 1000 may present a user at a client with an interactive webpage having a number of selectable criteria thereon.
  • the process 1000 receives the user's query criteria selection (block 1002).
  • the process 1000 awaits user selection either to test the criteria or to run a query based on the criteria.
  • the activities taken by the process 1000 upon a user indicating a desire to test the criteria will be described, followed by the activities taken by the process 1000 upon a user indicating a desire to run the query.
  • an SQL query (a form of query instruction set) is built based on the user selections (block 1004).
  • the SQL query is used to interrogate the database directly to determine the number of records that meet the criteria of the SQL criteria (block 1006).
  • the process 1000 provides to the user an indication of the number of records that would result from the running of the SQL (block 1008).
  • the process 1000 builds the SQL for the query based on the user selections (block 1010).
  • a run report process 1012 is started.
  • the run report process 1012 makes use of an RDL object model to generate RDL instructions that are provided to an XML engine that processes RDL.
  • the XML engine processes the RDL and produces the query results, which are provided to the user in, for example, a web browser in an HTML format.
  • FIG. 11 shows one example of a run report process 1100, which may be used to implement the run report process 1012 of FIG. 10.
  • the process 1100 translates the user selections into an RDL object model, which has been previously described in detail (block 1102).
  • the process 1100 receives from the RDL object model an RDL file representing the user- designed query in an RDL format (block 1104).
  • the process 1100 places a web-service call to the XML engine using the contents of the RDL file (block 1106).
  • the XML engine processes the RDL query and retrieves from the database all records (or rows) matching the criteria specified by the user and reflected in the RDL file.
  • the XML engine then passes the query results to the process 1100 (block 1108).
  • the process upon receiving the results from the XML engine, spawns a viewer on the user's client machine (block 1110) and presents the results in the spawned viewer (block 1112). After the results have been presented to the user in the viewer (block 1112), the process 1100 ends by passing control back to its calling routine.
  • a user interface screen 1200 includes a data source selection portion 1202, a prestored query portion 1204, a work area 1206, and a toolbar 1208.
  • the toolbar includes a number of icons such as Run Report 1210, Test SQL 1212, Save Report 1214, Clear Work Area 1216, Open Report 1218, Deploy to Reporting Services 1222, and Help 1224.
  • the data source selection portion 1202 may be implemented using a dropdown style graphical interface within the data source selection portion 1202 are listed the data sources to which the user may connect and of which queries may be made Each listed data source may have a corresponding Internet protocol (IP) address or URL at which the data is located The selection of one of the listed data sources causes the client to connect to a server hosting the selected data source
  • IP Internet protocol
  • the prestored query portion 1204 may include categories of Tables, Views, Stored Procedures, User Queries, and/or SQL Text
  • the information stored in each category may be organized in a Windows-like folder arrangement
  • the selection of the Views category results in a listing 1302 of the prestored database objects located within the Views category
  • the database objects stored in the prestored query portion 1204 may be frequently used queries or portions of queries that users have found particularly useful in the past Accordingly, the prestored query portion 1204 may be used as a shortcut for frequently used queries.
  • the availability of prestored queries lessens the burden on employees to redesign a query each time they want to run a report, thereby easing the burden on any database administration personnel that may be used for assistance in setting up the queries
  • the Run Report 1210 icon may be selected by a user once the user is confident that the query he/she has designed is accurate
  • the Test SQL 1212 icon may be selected by the user to test the query that he/she has designed
  • One of the results of the query test may be a total number of records that would be returned if the query were to be actually run Further detail on each of the Run Report 1210 and Test SQL 1212 icons is provided below
  • the Save Report 1214 icon when selected by a user, may spawn child windows that prompt the user to specify a location in which the user desires to save the RDL file
  • the Clear Work Area 1216 icon is selected by a user when the user desires the software to clear the work area 1206 of various open items that may be displayed
  • the Open Report 1218 icon is a long hand manner by which a previously saved RDL file may be selected for opening For example, selection of the icon 1218 may span various child windows that the user may employ to specify a location of a report to be opened Alternatively, a user could simply navigate to an RDL file and double-click the RDL file
  • the user may select the icon denoted with reference numeral 1222 to deploy to reporting services
  • the selection to deploy to reporting services stages the RDL produced by the query module on a Microsoft SQL reporting services server or any other serve, thereby enabling users to run reports within the Microsoft server environment or any other such RDL platform
  • Help 1224 icon By selecting the Help 1224 icon, a user may invoke context-sensitive help As with many Windows-based programs, the selection of the Help 1224 icon may provide the user with an index of help topics or a searchable table of contents that may be searched to identify help for various issues that a user may encounter
  • FIG 14 reflects the state of a user interface screen 1400 after a user has selected a predefined view 1402
  • the selection of the predefined view populates the work area with a report options portion 1404 and a report data portion 1406
  • the report options portion 1404 includes a number of fields into which data may be provided to customize the look and feel of the report to be generated
  • the report options portion 1404 includes a report title field that may be populated with the title "Sales By Company " Further the report options portion 1404 may also include various fields that may be used to select colors for various portions of the report
  • the report data portion 1406 includes a number of columns such as sort 1410, a show 1412, a column name 1414, a column label 1416, a column width 1418, operator 1420, filter value 1422, group by 1424, sort by 1426, and sum 1428
  • the sort column 1410 may be used to change the priority with which the fields of the report are displayed For example, as shown in FIG 15, the field company name 1502 may be moved to the top row by actuating the up arrow icon in the sort field 1410 [0071]
  • the user may select which information from the rows of information is to be displayed on the final report by selecting or deselecting the checkboxes in the show column 1412. For example, as shown in FIG. 15, all of the check boxes have been selected and, therefore, all of the information relevant to the selected rows will be displayed on the final report.
  • the column name 1414 is the actual field name from the database and the column label 1416 is the label for the column that will be displayed on the final report. While, as shown in FIG. 15, the column labels 1416 may match the column names 1414, this is not necessarily the case. In fact, the column label 1416 may be manipulated to make the final report more user-friendly and easy to read.
  • the column width 1418 includes a number of fields into which user preferences for column widths may be placed.
  • the fields may be initially filled with a default value such as 1.5 inches.
  • a default value such as 1.5 inches.
  • such default values may be changed to accommodate columns that may have information wider than the default setting.
  • the operator column 1420 may be implemented using a drop down box having a number of conditional expressions therein.
  • the drop down box may include greater-than, equal-to, and less-than symbols.
  • the selected symbols in the operator column 1420 are used to compare the value of the data in the field with a filter value provided by a user in the filter column 1422.
  • a filter value provided by a user in the filter column 1422.
  • an operator of equal-to maybe used in the company name in conjunction with a filter value of Company A to select records pertinent only to Company A.
  • the filter column 1422 may be filled by selecting a lookup function that provides a user with a list of optional filter values that be applied.
  • the filter column 1422 may also support the use of wildcard expressions to enable flexible filtering based on partial expressions.
  • the group by column 1424 may be used to select one or more criteria by which report results are to be grouped and subtotaled. For example, as shown in FIG. 15, a group by icon may be selected to indicate that the user desires to group the report results by CompanyName. [0076] After the criteria within the options portion 1404 and the report data portion 1406 have been configured as shown in FIG. 15, a user may opt to select the Test SQL icon. As described above in conjunction with FIG. 3, the Test SQL icon causes the base code 302 to interrogate the database 310 and to return statistics there from. For example, with reference to FIG. 16, a SQL test area 1602 may be spawned and may include information such as the SQL text that was tested 1604, the record count that would result is the report were actually run 1606, and the execution time of the test 1608.
  • the results will be displayed in a report viewer 1702.
  • the report will include the title 1704 previously specified by the user and will include company name 1706, sale amount 1708, orderlD 1710, and ShippedDate 1712 columns. Also, the results displayed in the report viewer 1702 are grouped by CompanyName.
  • a user may opt to export and/or save the report in one of a number of different formats by selecting a drop down box 1902.
  • the drop down box 1902 may include a listing of various file formats in which the report may be saved.
  • the report may be saved in XML, CSV, TIFF, PDF, XLS, and/or HTML formats. Additionally, other suitable formats may be provided in which the report may be saved.
  • the report may also include a Printer Friendly Report 1904 icon, the selection of which converts any report displayed in the work area into a report that may be easily printed.
  • the conversion process may include changing the page layout, the margins, or any other suitable parameter that makes the report easier to read and view when printed.
  • Appendix B which constitutes a part of this written description of the preferred embodiments of the invention, constitutes a part of shows an HTML version of the report in printed form.
  • the HTML version of the report may be presented to a user in a web browser without the need for the user to have specific plug-ins or other software installed.
  • the report may be created in other programming languages than HTML.
  • the report could be generated in XML, MHTML, or any other suitable language that may be read by software resident on the client employed by the user (e.g., a web browser such as Microsoft Internet Explorer and the like).
  • a system enables a user at a client to generate reports in an ad hoc manner using a conventional web browser.
  • the client employed by the user need not include any additional software over and above a well-known Internet browser. This is possible because of the functionality employed at the server, which serves information to the client in a web-based format and presents report results to a user in a viewer.
  • the server advantageously uses an RDL object model to format query information to be processed by a RDL XML processing module, such as may be found in an XML engine.
  • ⁇ Textbox Name Textboxl7 "> ⁇ Height>0.21in ⁇ /Height> ⁇ Width> 100pt ⁇ /Width> ⁇ Top>Oin ⁇ /Top> ⁇ Left>Oin ⁇ /Left> ⁇ Style>
  • FontStyle > Normal ⁇ /FontSty le > ⁇ FontFamily>Arial ⁇ /FontFamily> ⁇ FontSize> 10pt ⁇ /FontSize> ⁇ FontWeight>Normal ⁇ /FontWeight> ⁇ /Style> ⁇ /PageFooter> ⁇ Custom xmlns "http://crb.cizer.com"> ⁇ CurrentTextboxID>20 ⁇ /CurrentTextboxID> ⁇ CurrentTableID>l ⁇ /CurrentTableID> ⁇ CurrentImageID>0 ⁇ /CurrentImageID> ⁇ QQCustom>

Abstract

Methods and apparatus allow for the implementation of a standard report definition language in the development of report applications, and specifically those report applications intended to provide client-independent database inquires. Specifically, an object model is configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report. The report definition output file is preferably an RDL output file based on the Report Definition Language Specification published by Microsoft Corporation, although any type of report definition specification that provides interoperability may be utilized.

Description

METHODS AND APPARATUS TO PERFORM CLIENT-INDEPENDENT DATABASE QUERIES
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority from United States Provisional Application 60/536,972 filed on January 16, 2004.
TECHNICAL FIELD
[0002] The present invention pertains to databases and querying of databases. More particularly, the present invention pertains to methods and apparatus to perform client-independent database queries utilizing an object model to generate a report definition output file.
BACKGROUND
[0003] There are a number of database application programs available in the commercial market. Most of these database application programs utilize a proprietary format for representing the definition of a report to be generated based on data contained within the database. In addition, most vendors that provide a report execution environment for their applications limit utilization thereof to their own specific design tools. Users are therefore faced with a situation in which reports cannot be easily generated and moved between different applications utilizing different reporting implementations.
[0004] In order to overcome the difficulties associated with the multitude of report definitions, Microsoft Corporation has developed a Report Definition Language (RDL) to promote the interoperability of available report applications by defining a common schema that allows interchangeability of report definitions. Microsoft Corporation has published a Report Definition Language Specification enabling developers to implement RDL in a variety of applications. [0005] While the development of RDL represents a significant step in allowing interchangeability of report definitions, it requires developers to become familiar with yet another language specification. Accordingly, it would be desirable to provide methods and apparatus that would allow the implementation of RDL in a way that would not require significant effort on the part of a software developer.
SUMMARY OF THE INVENTION
[0006] The invention provides methods and apparatus that allows the implementation of a standard report definition language in the development of report applications, and specifically those report applications intended to provide client- independent database inquires.
[0007] Specifically, the invention provides an object model configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
[0008] The report definition output file is preferably an RDL output file based on the Report Definition Language Specification published by Microsoft Corporation. It will be understood by those skilled in the art, however, that the invention is applicable to any type of report definition specification that provides interoperability.
[0009] In a preferred an object model wrapper is utilized to provide an interface to the object model for the user selections. Accordingly, frequently utilized query elements can be predefined by the object model wrapper to provide a short-cut for programmers. The object model wrapper effectively operates as an object model to the object model or a wrapper around the object model, whereby a single instruction or element supplied to the object model wrapper is expanded to a plurality of instructions or elements. Thus, particularly for frequently used elements, the number of entries required to be made by the programmer is reduced.
[0010] The object model and object model wrapper preferably constitute elements of a query model. The query model further includes a base code module coupled to the object module and the object model wrapper, wherein the base code module receives user selections and provides the user selections to the object model wrapper and receives the report definition output file from the object module.
[0011] Further, the query model is preferably implemented in a database query system. The database query system includes an internet information server, wherein the internet information server receives user selections from and provides information to clients. The query module is interfaced with the internet information server, wherein the query module includes an object model configured to receive the user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report. An XML engine is interfaced with the query module, wherein the XML engine receives a report definition output file from the query module that is processed by the XML engine to generate a report in a desired format.
[0012] In a preferred implementation, the database query system includes a web programming tool set module interfaced with the query module, wherein the query module utilizes the web programming tool set module to generate user interface screens that are supplied to the clients via the internet information server.
[0013] A network is also preferably coupled to the internet information server to interface the internet information server to the clients.
[0014] The invention also provides a method of providing a database query that includes: receiving user selections that specify query criteria for a desired query; building a query instruction set based on the user selections; utilizing an object model to generate report definition output file representative of an XML expression of a report based on the Query instruction set; supplying the report definition file to an XML engine; and processing the report definition output file with the XML engine to produce query results in the form of a report.
[0015] The processing of the report definition output file with the XML engine preferably includes retrieving from a database information matching the query criteria specified by the user selections and reflected in the report definition output file. [0016] If desired, the query criteria can be tested first before running the query to generate a report, by utilizing the Query instruction set to directly interrogate a database to determine the number of records that meet the query criteria, and providing to a user an indication of the number of records that would result from the running of the desired query.
[0017] A machine readable medium may also be encoded with machine instructions in accordance with the instructions, wherein the machine instructions include an object model configured to receive user selections and convert the user selections into a report definition output file representative of an XML expression of a report that may be processed by an XML engine to generate a report.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The invention will be described in greater detail with reference to certain preferred embodiments of the invention and the accompanying drawings, wherein: FIG. 1 is a diagram of an example client/server system; FIG. 2 is a diagram providing additional detail regarding one example manner in which the server of FIG. 1 may be implemented; FIG. 3 is a diagram providing additional detail regarding one example manner in which the query module of FIG. 2 may be implemented; FIG. 4 is a relationship diagram illustrating example interaction among the various entities of FIG. 3; FIG. 5 is an example code segment representing the base code of FIG. 3; FIG. 6 is an example code segment representing the RDL object model wrapper code of FIG. 3; FIG. 7 is an example code segment representing the RDL object model of FIG. 3; FIG. 8 is a diagram illustrating one manner in which the RDL object model of FIG. 3 may be implemented; FIG. 9 is a diagram of an example hardware system that may be used to implement the server of FIG. 1; FIG. 10 is a flow diagram of an example query-by-example process that may be implemented by instructions carried out by the example hardware system of FIG.
9; FIG. 11 is a flow diagram of an example run report process that may be implemented by instructions carried out by the example hardware system of FIG. 9; FIG. 12 is a screen-shot of an example user interface that may be provided to the client by the server of FIG. 1 ; FIG. 13 is a screen-shot of an example user interface showing additional detail regarding available Views of a selected data source; FIG. 14 is a screen-shot of an example user interface showing additional detail provided to the client to customize the query upon selection of the Sales Totals by Amount (dbo) view; FIG. 15 is a screen-shot showing the results of user customization of the query; FIG. 16 is a screen-shot showing the results of a user requesting a record count of the query customized as shown in FIG. 15; FIG. 17 is a screen-shot showing the results of a user requesting a run of the query customized as shown in FIG. 15; and FIG. 18 is a screen-shot showing the results of a user selecting the Select a format drop down box.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0019] Although the following discloses example systems including, among other components, software executed on hardware, it should be noted that such systems are merely illustrative and should not be considered as limiting. For example, it is contemplated that any or all of these hardware and software components could be embodied exclusively in dedicated hardware, exclusively in software, exclusively in firmware or in some combination of hardware, firmware and/or software. Accordingly, while the following describes example systems, persons of ordinary skill in the art will readily appreciate that the examples are not the only way to implement such systems. [0020] As shown in FIG. 1, a computing network 100 may include a server 102 having an associated database 104. One or more clients 106, 108 may be coupled to the server 102, either directly (as in the case of the client 106) or through a network 110 (as in the case of the client 108). As disclosed herein, the computing network 100, which is configured as described herein, allows one or more users to operate one or more clients (e.g., the clients 106 or 108) to access data from the database 104 via the server 102. Importantly, users at the clients (e.g., the clients 106 and/or 108) will be able to create ad hoc, customized reports of data in the database 104 without the need to install special client software or without requiring the help of database administration personnel. According to one example, the only requirements placed on the clients (e.g., the clients 106, 108) are that they have Internet connectivity and a web browser such as Microsoft Internet Explorer or any other suitable software. Accordingly, non-technically oriented employees will be able to run custom queries using a query-by-example (QBE) paradigm. Additionally, because specialized software is not required, employees will be able to access data and run custom reports and queries from anywhere in the world, provided the employees have access to an Internet connection and an Internet browser.
[0021] As described in further detail below, the server 102 may implement a structured query language (SQL) database software package or any other suitable software package such as, for example, DB2, Oracle, and/or Informix. The server 102 also includes other software functionality that makes it possible for clients having only a web browser to access and run custom reports. From a hardware perspective, the server 102 may be implemented using any suitable and commercially available server computing system that may be available from, for example, Dell, IBM, etc. Further detail regarding the hardware configuration of the server is provided below.
[0022] The database 104 may reside within the server 102 or may be implemented apart there from. For example, the database 104 may be implemented on a mass storage device that is built within the server 102. Alternatively or additionally, the database 104 may be implemented using any suitable data source such as, for example, a Microsoft Excel spreadsheet or a text repository. [0023] The clients 106, 108 may be implemented using any computing system. For example, the clients 106, 108 may be implemented using desktop or laptop computer systems. As noted previously, the clients 106, 108 require no special software functionality. For example, the clients 106, 108 may include only web browsing software. Additionally, such web browsing software need not include any special plug-ins or software add-ons. Clients configured with operational web browsers are enabled via the disclosed system to create and run reports on the information on the database 104.
[0024] The network 110 may be implemented using any suitable configuration. For example, the network may be implemented using a local area network (LAN), a wide area network (WAN), or any other network arrangement. In one particular, example, the network 110 may be implemented using the Internet. As will be readily appreciated by those having ordinary skill in the art, the Internet is an international network linking a vast number of computer nodes to one another. For example, if the network 110 is implemented using the Internet, the client 108 could be located on, for example, the west coast of the United States and the server 102 could be located on, for example, the east coast of the United States. As disclosed herein, a user at the client 108 would be able, through the Internet, to access the server 102 and the database 104. By establishing a connection to the server 102 through the network 110, the user at the client would be able to perform ad hoc reporting using real-time data stored in the database 104.
The Server System
[0025] FIG. 2 illustrates one server system 200 in which the server 102 may be implemented. In general, the server system 200 includes an Internet information server (IIS) 202 that is coupled to an ASP.NET module 204 and that receives information from and provides information to clients (e.g., the clients 106, 108 of FIG.1). The IIS 202 is further coupled to a query module 206 that is also coupled to a SQL server extensible markup language (XML) consumer engine (XML engine) 208. Both the query module 206 and the XML engine 208 are coupled to a database (e.g., the database 104 of FIG. 1). [0026] In general, the IIS 202 is the uniform resource locator (URL) address at which the query module 206 may be found. Although the nomenclature IIS is from the Microsoft vernacular, those having ordinary skill in the art will readily recognize that other services may be used such as, for example, Apache in the UNIX domain. Alternatively, any suitable web server may be used to implement certain functionality performed by the IIS 202.
[0027] The ASP.NET module 204[MCZ1] is a Microsoft web programming tool set and development platform. The query module 206 may use the ASP.NET module 204 to generate user interface screens that provide users the ability to customize queries. While the ASP.NET module 204 is shown as being one example, those having ordinary skill in the art will readily recognize that other components such as Java 2 Enterprise Edition may be used.
[0028] In general, the query module 206 receives user-generated query information from the clients (e.g., the clients 106, 108) and processes the query information, as described below, to form RDL code/instructions representing the query information. The RDL code is then passed to the XML engine 208, which queries the database and returns a record set that will be displayed to a user.
[0029] The XML engine 208 is a XML manipulation engine that receives XML and performs queries on one or more databases or data sources, to obtain data there from. Further, the XML engine 208 formats the data and returns the query results in HTML, MHTML (Microsoft hypertext markup language), PDF (portable document format), or any other suitable format. The XML engine 208 manipulates XML that is compatible with the report definition language (RDL) specification, second draft, prepared by Microsoft and dated March 31 , 2003, or any subsequently specified RDL specification. The Microsoft report definition language specification, dated March 31 , 2003, is incorporated by its entirety herein.
[0030] In general, during operation, the IIS 202 receives query information from the browser operating on the client and passes the query information to the query module 206, which may directly interrogate a database (e.g., the database 104) and may respond to the client with relevant information. Alternatively, the query module 206, upon receiving user-generated query information, may perform some processing and invoke a web-service call to the XML engine 208. The web-service call may include an RDL set of language instructions that will be interpreted by the XML engine 208 and used by the XML engine 208 to extract information from the database. The extracted information, which may be referred to as extracted records, is passed back to the client in a format that is easily readable by the client. For example, the results of the query (i.e., the resulting record set) may be formatted in XML, HTML, or any other suitable format, either of which may be presented to a user at the client via a viewer such as a web browser.
The Query Module
[0031] Further detail pertinent to the query module 206 of FIG. 2 is provided in conjunction with an example query module 300 of FIG. 3, which may be used to implement the query module 206. In general, the example query module 300 includes base code, which may also be referred to at user interface (Ul) code 302, an RDL object model wrapper 304, an RDL object model 306, and a WEB.CONFIG file 308. As shown in FIG. 3, the base code 302 may also be coupled to a database 310, which may be implemented using the database 104 of FIG. 1. In general, as described below in detail, the RDL object model 306 is a software construct that is configured to receive the user selections and convert the user selections into an RDL output file that may be processed by the XML engine (e.g., the XML engine 208 of FIG. 2). Further detail pertinent to each of the base code 302, the RDL object model wrapper 304, and the RDL object model 306 are their interaction is provided below.
[0032] The general operation of the example query module 300 will now be described in conjunction with FIG. 3 and in further conjunction with a relationship diagram 400 of FIG. 4. In general, during operation, the base code 302 receives user query information from a client. For example, as described below in conjunction with the user interface portion of this document, the user at a client may be presented with a webpage-like user interface into which the user may provide his/her query criteria. As shown in FIG. 3, these user selections are provided to the base code 302. Additionally, as the user selections are made, the user interface provided to the user via the client is updated by the base code so that the user may constantly view the current state of the query and user selections. [0033] As part of the user interface provided to the user at the client, the user may be able to test the query selections that he/she has made. By opting to test the query selections, the user instructs the base code 302 to interrogate the database 310. The results of the database interrogation are provided back to the base code 302, which, in turn, passes the results to the user at the client via a series of user interface screens.
[0034] Alternatively, when a user 402 at a client is happy with the selections or query criteria that the user has assembled and has decided to execute the query or run a report 404, the selections are fed from the base code 302 to the RDL object model wrapper 304. This is reflected in FIG. 4 as creating a table data region 406. Generally, the object model wrapper 304, which is optional in nature, provides a programming interface to the RDL object model 306 and, therefore, requests the RDL object model 306 to create an RDL table 408. In particular, the programming interface provided by the object model wrapper 304 may simplify the manner in which programmers access the RDL object model 306, by essentially providing a short-cut to commonly utilized query criteria. In effect, the RDL object model wrapper 304 acts as an object model within an object model.
[0035] Additionally, the user may opt to add fields to the table data region that was previously created 410. At this point the RDL object model wrapper 304 may request the RDL object model 306 to add table columns 412, to add header rows 414, to add detail rows 416, and/or to set dataset names 418.
[0036] When the user is content with the query information, the user may request an RDL document 420 reflecting the specified query information. At this point, the RDL object model 306 will be serialized into an RDL XML document 422 that is provided to the base code 302.
[0037] When the user requests creation or generation of the report, the serialized RDL document is passed to the XML engine 208, as shown at reference numeral 424. The XML engine 208 processes the serialized RDL document including the query and returns query results formatted as an HTML, MHTML, or any other suitable formatted result set for display to the user 426. [0038] The WEB.CONFIG file 308 may store various portions of information related to the base code 302. For example, the WEB.CONFIG file 308 may store data source connection information and may store the names of tables, view, and stored procedures that may be viewed by a user. In such an arrangement, the base code 302 may access a database to determine the identities of a number of different tables, views, and/or stored procedures that may be accessed by a user. Before all of the tables, views, and/or stored procedures are presented to a user, the base code 302 may access the WEB.CONFIG file 308 to determine which of the items should be displayed to the user. For example, one or more views may be kept from the user through filtering performed by the base code 302 based on information stored in the WEB.CONFIG file 308. Additionally, the WEB.CONFIG file 308 may be used to define security settings for the base code 302. For example, the WEB.CONFIG file 308 may define whether a user is required to login to obtain access to the functionality provided by the base code 302. Further, the WEB.CONFIG file 308 may be used to store user queries that need not be stored in the database on the server. Of course, user queries and/or application settings stored in the WEB.CONFIG file 308 could alternatively or additionally be stored within the database.
The Base Code, The RDL Object Model Wrapper, and the RDL Object Model
[0039] FIGS. 5A-5E illustrate example portions of base code 500. In general, the base code 500 is the interface between the user and an RDL object model wrapper 600 of FIG. 6. The RDL object model wrapper 600 receives requests from the base code 500 and passes some or all of those requests to an RDL object model 700 of FIGS. 7A-7D. The following example operation is provided in the context of the need to create a table data region. Accordingly, the example calls made to the RDL object model wrapper 600 and the RDL object model 700 are made to fulfill the addition of the table data region to a report. Of course, the following is merely one example of how the base code 500, the RDL object model wrapper 600, and the RDL object model 700 interact.
[0040] The execution of the base code 500 begins as defined in FIG. 5A and continues execution until a call to the RDL object model wrapper 600 is reached. In FIG. 5A, the call to the RDL object model wrapper 700 is represented by the line of code indicated by reference numeral 502. At the reference numeral 502, the base code 500 calls an AddBlankRegion routine, which resides within the RDL object model wrapper 600.
[0041] Once called, the RDL object model wrapper 600 of FIG. 6 begins execution at the top of the code listing due to the call into the AddBlankRegion routine. The RDL object model wrapper 600 executes a number of lines of code and then reaches the code denoted by reference numeral 602, which is a new table call to the RDL object model 700. The RDL object model 700 begins execution at a public class Table: DataRegion line of code denoted at reference numeral 702. Each of the remaining lines of code shown in FIGS. 7A-7C are executed until the line of code denoted with reference numeral 704 is reached, at which point control returns to 602 of FIG. 6. The RDL object model wrapper 600 continues its execution from line 602 until it reaches a line denoted at reference numeral 604, which instructs the RDL object model wrapper 600 to return the generated table data region to the calling routine, which is the base code 500 at line 502.
[0042] The foregoing described process of the base code 500 calling the RDL object model wrapper 600, which, in turn, calls the RDL object model 700 may be repeated a number of times to build and define tables required by the user interface. For example, while adding a table data region is described above, any other of the object model classes described in conjunction with FIG. 8 below may be called in a similar manner.
RDL Object Model
[0043] Turning now to FIG. 8, a representation of an RDL object model shows various classes that collectively define the RDL object model. FIG. 8 is shown as being an object-oriented model class diagram representing hierarchical and relational grouping of programming constructs. Each of the blocks shown in FIG. 8 includes a title portion in which the name of the class is displayed, a variable location that describes the state of the object. Below the variable location is a methods and properties location that defines behavior of the class. [0044] For example, the RDL object model includes Report 802, Reportltems 804, Reportltem 806, and ReportltemType 808 classes. The Reportltem 806 class is linked to DataRegion 810, Image 812, and Textbox 814 classes. The DataRegion 810 class is further linked to Table 816 and Chart 818 classes. PageFooter 820 and PageHeader 822 classes provide information to a PageHeaderFooterType 824 class. The RDL model further includes DynamicSeries 826, DynamicCategories 828, and Body 830 classes.
[0045] As shown in FIG. 8 and as will be readily appreciated by those having ordinary skill in the art, the relationships or links between the various classes define how classes will inherit traits from other classes. For example, the Table 816 class inherits its traits from the DataRegion 810 class, which inherits its traits from the Reportltem 806 class. As will be readily appreciated by those having ordinary skill in the art, the RDL object model of FIG. 8 may include various other classes that are yet to be defined, but will be substantially completely compatible with the RDL specification.
Example Server Hardware
[0046] As shown in FIG. 9, an example processor system 900 that may be used to implement the server 102 of FIG. 1 includes a processor 902 having associated memories 904, such as a random access memory (RAM) 906, a read only memory (ROM) 908, and a flash memory 910. The processor 902 is coupled to an interface, such as a bus 920 to which other components may be interfaced. In the illustrated example, the components interfaced to the bus 920 include an input device 922, a display device 924, a mass storage device 926, and a removable storage device drive 928. The removable storage device drive 928 may include associated removable storage media (not shown), such as magnetic or optical media. The processor system 900 may also include a network adapter 930.
[0047] The processor 902 may be any type of processing unit, such as a microprocessor from the Intel family of microprocessors. Alternatively, the processor 902 may be implemented using any other suitable processor technology. [0048] The memories 904 that are coupled to the processor 902 may be any suitable memory devices and may be sized to fit the storage and operational demands of the system 900. In particular, the flash memory 910 may be a nonvolatile memory that is accessed and erased on a block-by-block basis and that stores instructions that cause the processor 902 to perform various actions.
[0049] The input device 922 may be implemented using a keyboard, a mouse, a touch screen, a track pad or any other device that enables a user to provide information to the processor 902.
[0050] The display device 924 may be, for example, a liquid crystal display (LCD) monitor, a cathode ray tube (CRT) monitor or any other suitable device that acts as an interface between the processor 902 and a user. The display device 924 includes any additional hardware required to interface a display screen to the processor 902.
[0051] The mass storage device 926 may be, for example, a conventional hard drive or any other magnetic or optical media that is readable by the processor 902.
[0052] The removable storage device drive 928 may be, for example, an optical drive, such as a compact disk-recordable (CD-R) drive, a compact disk-rewritable (CD-RW) drive, a digital versatile disk (DVD) drive, or any other optical drive. The removable storage device drive 928 may alternatively be, for example, a magnetic media drive. If the removable storage device drive 928 is an optical drive, the removable storage media used by the drive 928 may be a CD-R disk, a CD-RW disk, a DVD disk, or any other suitable optical disk. On the other hand, if the removable storage device drive 48 is a magnetic media device, the removable storage media used by the drive 928 may be, for example, a diskette or any other suitable magnetic storage media.
[0053] The network adapter 930 may be any suitable network interface such as, for example, an Ethernet card, a wireless network card, a modem, or any other network interface suitable to connect the processor system 900 to a network 932. The network 932 to which the processor system 900 is connected may be, for example, a local area network (LAN), a wide area network (WAN), the Internet, or any other network. For example, the network could be a home network, an intranet located in a place of business, a closed network linking various locations of a business, or the Internet.
Querv-Bv-Example Building Process
[0054] FIG. 10 is a flow diagram representing example instructions that may be carried out by the hardware of FIG. 9 to enable a user at a client to perform a query- by-example building process 1000. Instructions implementing the query-by-example (QBE) process 1000 may be stored and executed by a server (e.g., the server 102 of FIG. 1).
[0055] The process 1000 begins by receiving user selections that specify query criteria (block 1002). As described below in detail, the query criteria may be specified using fields, drop down boxes, check boxes, radio buttons, or any other suitable user interface techniques that enable a user at a client to make query criteria selections using web-based user interface techniques. For example, the process 1000 may present a user at a client with an interactive webpage having a number of selectable criteria thereon. Upon selection of various ones of the criteria, the process 1000 receives the user's query criteria selection (block 1002).
[0056] After the selections for the query have been received (block 1002), the process 1000 awaits user selection either to test the criteria or to run a query based on the criteria. The activities taken by the process 1000 upon a user indicating a desire to test the criteria will be described, followed by the activities taken by the process 1000 upon a user indicating a desire to run the query.
[0057] After the user selections for a query have been received (block 1002) and the user has indicated a desire to test the query, an SQL query (a form of query instruction set) is built based on the user selections (block 1004). The SQL query is used to interrogate the database directly to determine the number of records that meet the criteria of the SQL criteria (block 1006). After the server has interrogated the database with the generated SQL (block 1006) and has received an indication of the number of records that would results from the SQL query, the process 1000 provides to the user an indication of the number of records that would result from the running of the SQL (block 1008). [0058] Alternatively, if the user opts to run a query based on the selections, the process 1000 builds the SQL for the query based on the user selections (block 1010). After the SQL is built (block 1010), a run report process 1012 is started. In general, the run report process 1012 makes use of an RDL object model to generate RDL instructions that are provided to an XML engine that processes RDL. The XML engine, in turn, processes the RDL and produces the query results, which are provided to the user in, for example, a web browser in an HTML format.
Run Report Process
[0059] FIG. 11 shows one example of a run report process 1100, which may be used to implement the run report process 1012 of FIG. 10. Upon its commencement, the process 1100 translates the user selections into an RDL object model, which has been previously described in detail (block 1102). The process 1100 receives from the RDL object model an RDL file representing the user- designed query in an RDL format (block 1104). Upon receiving the RDL file (block 1104), the process 1100 places a web-service call to the XML engine using the contents of the RDL file (block 1106).
[0060] The XML engine processes the RDL query and retrieves from the database all records (or rows) matching the criteria specified by the user and reflected in the RDL file. The XML engine then passes the query results to the process 1100 (block 1108). The process, upon receiving the results from the XML engine, spawns a viewer on the user's client machine (block 1110) and presents the results in the spawned viewer (block 1112). After the results have been presented to the user in the viewer (block 1112), the process 1100 ends by passing control back to its calling routine.
User Interface Aspects
[0061] Referring now to FIG. 12, a user interface screen 1200 includes a data source selection portion 1202, a prestored query portion 1204, a work area 1206, and a toolbar 1208. The toolbar includes a number of icons such as Run Report 1210, Test SQL 1212, Save Report 1214, Clear Work Area 1216, Open Report 1218, Deploy to Reporting Services 1222, and Help 1224. [0062] The data source selection portion 1202 may be implemented using a dropdown style graphical interface Within the data source selection portion 1202 are listed the data sources to which the user may connect and of which queries may be made Each listed data source may have a corresponding Internet protocol (IP) address or URL at which the data is located The selection of one of the listed data sources causes the client to connect to a server hosting the selected data source
[0063] Referring to FIG 13, the prestored query portion 1204 may include categories of Tables, Views, Stored Procedures, User Queries, and/or SQL Text The information stored in each category may be organized in a Windows-like folder arrangement For example, as shown in FIG 13, the selection of the Views category results in a listing 1302 of the prestored database objects located within the Views category The database objects stored in the prestored query portion 1204 may be frequently used queries or portions of queries that users have found particularly useful in the past Accordingly, the prestored query portion 1204 may be used as a shortcut for frequently used queries The availability of prestored queries lessens the burden on employees to redesign a query each time they want to run a report, thereby easing the burden on any database administration personnel that may be used for assistance in setting up the queries
[0064] Referring back to FIG 12, a brief overview of each of the icons 1210, 1212, 1214, 1216, 1218, 1222, 1224 will now be provided Further detail regarding certain ones of the icons is provided below with regard to other user interface screens The Run Report 1210 icon may be selected by a user once the user is confident that the query he/she has designed is accurate The Test SQL 1212 icon may be selected by the user to test the query that he/she has designed One of the results of the query test may be a total number of records that would be returned if the query were to be actually run Further detail on each of the Run Report 1210 and Test SQL 1212 icons is provided below
[0065] The Save Report 1214 icon, when selected by a user, may spawn child windows that prompt the user to specify a location in which the user desires to save the RDL file The Clear Work Area 1216 icon is selected by a user when the user desires the software to clear the work area 1206 of various open items that may be displayed The Open Report 1218 icon is a long hand manner by which a previously saved RDL file may be selected for opening For example, selection of the icon 1218 may span various child windows that the user may employ to specify a location of a report to be opened Alternatively, a user could simply navigate to an RDL file and double-click the RDL file
[0066] The user may select the icon denoted with reference numeral 1222 to deploy to reporting services The selection to deploy to reporting services stages the RDL produced by the query module on a Microsoft SQL reporting services server or any other serve, thereby enabling users to run reports within the Microsoft server environment or any other such RDL platform
[0067] By selecting the Help 1224 icon, a user may invoke context-sensitive help As with many Windows-based programs, the selection of the Help 1224 icon may provide the user with an index of help topics or a searchable table of contents that may be searched to identify help for various issues that a user may encounter
[0068] FIG 14 reflects the state of a user interface screen 1400 after a user has selected a predefined view 1402 The selection of the predefined view populates the work area with a report options portion 1404 and a report data portion 1406 The report options portion 1404 includes a number of fields into which data may be provided to customize the look and feel of the report to be generated For example, as shown in FIGS 14 and 15, the report options portion 1404 includes a report title field that may be populated with the title "Sales By Company " Further the report options portion 1404 may also include various fields that may be used to select colors for various portions of the report
[0069] The report data portion 1406 includes a number of columns such as sort 1410, a show 1412, a column name 1414, a column label 1416, a column width 1418, operator 1420, filter value 1422, group by 1424, sort by 1426, and sum 1428
[0070] The sort column 1410 may be used to change the priority with which the fields of the report are displayed For example, as shown in FIG 15, the field company name 1502 may be moved to the top row by actuating the up arrow icon in the sort field 1410 [0071] The user may select which information from the rows of information is to be displayed on the final report by selecting or deselecting the checkboxes in the show column 1412. For example, as shown in FIG. 15, all of the check boxes have been selected and, therefore, all of the information relevant to the selected rows will be displayed on the final report.
[0072] The column name 1414 is the actual field name from the database and the column label 1416 is the label for the column that will be displayed on the final report. While, as shown in FIG. 15, the column labels 1416 may match the column names 1414, this is not necessarily the case. In fact, the column label 1416 may be manipulated to make the final report more user-friendly and easy to read.
[0073] The column width 1418 includes a number of fields into which user preferences for column widths may be placed. In practice, the fields may be initially filled with a default value such as 1.5 inches. However, such default values may be changed to accommodate columns that may have information wider than the default setting.
[0074] The operator column 1420 may be implemented using a drop down box having a number of conditional expressions therein. For example, the drop down box may include greater-than, equal-to, and less-than symbols. The selected symbols in the operator column 1420 are used to compare the value of the data in the field with a filter value provided by a user in the filter column 1422. For example, an operator of equal-to maybe used in the company name in conjunction with a filter value of Company A to select records pertinent only to Company A. As shown FIG. 14, the filter column 1422 may be filled by selecting a lookup function that provides a user with a list of optional filter values that be applied. The filter column 1422 may also support the use of wildcard expressions to enable flexible filtering based on partial expressions.
[0075] The group by column 1424 may be used to select one or more criteria by which report results are to be grouped and subtotaled. For example, as shown in FIG. 15, a group by icon may be selected to indicate that the user desires to group the report results by CompanyName. [0076] After the criteria within the options portion 1404 and the report data portion 1406 have been configured as shown in FIG. 15, a user may opt to select the Test SQL icon. As described above in conjunction with FIG. 3, the Test SQL icon causes the base code 302 to interrogate the database 310 and to return statistics there from. For example, with reference to FIG. 16, a SQL test area 1602 may be spawned and may include information such as the SQL text that was tested 1604, the record count that would result is the report were actually run 1606, and the execution time of the test 1608.
[0077] Referring to FIG. 17, if the user opts to run the report defined in FIG. 15, the results will be displayed in a report viewer 1702. The report will include the title 1704 previously specified by the user and will include company name 1706, sale amount 1708, orderlD 1710, and ShippedDate 1712 columns. Also, the results displayed in the report viewer 1702 are grouped by CompanyName.
RDL File
[0078] If the user likes the results obtained by the query specified in FIGS. 14 and 15, the user may opt to save the RDL corresponding to the specified query. One example RDL file representing the query specified in FIGS. 14 and 15 is shown in Appendix A, which constitutes a part of this written description of the preferred embodiments of the invention.
The Resulting Report
[0079] As shown in FIG. 18, a user may opt to export and/or save the report in one of a number of different formats by selecting a drop down box 1902. The drop down box 1902 may include a listing of various file formats in which the report may be saved. For example, the report may be saved in XML, CSV, TIFF, PDF, XLS, and/or HTML formats. Additionally, other suitable formats may be provided in which the report may be saved.
[0080] The report may also include a Printer Friendly Report 1904 icon, the selection of which converts any report displayed in the work area into a report that may be easily printed. The conversion process may include changing the page layout, the margins, or any other suitable parameter that makes the report easier to read and view when printed.
[0081] Appendix B, which constitutes a part of this written description of the preferred embodiments of the invention, constitutes a part of shows an HTML version of the report in printed form. As will be readily appreciated by those having ordinary skill in the art, the HTML version of the report may be presented to a user in a web browser without the need for the user to have specific plug-ins or other software installed. Additionally or alternatively, the report may be created in other programming languages than HTML. For example, the report could be generated in XML, MHTML, or any other suitable language that may be read by software resident on the client employed by the user (e.g., a web browser such as Microsoft Internet Explorer and the like).
[0082] As disclosed herein, a system enables a user at a client to generate reports in an ad hoc manner using a conventional web browser. The client employed by the user need not include any additional software over and above a well-known Internet browser. This is possible because of the functionality employed at the server, which serves information to the client in a web-based format and presents report results to a user in a viewer. The server advantageously uses an RDL object model to format query information to be processed by a RDL XML processing module, such as may be found in an XML engine.
[0083] It will be understood, however, that modifications and variations are possible within the scope of the appended claims. For example, the invention is not limited to RDL as defined by Microsoft Corporation, but can also be utilized with other report definition specifications.
APPENDIX A <?xml version="1.0" encoding="utf-8" ?> < Report xmlns:rd = "http://schemas. microsoft.com/SQLServer/reporting/reportde signer" xmlns="http://schemas. microsoft.com/sqlserver/reporting/2003/10/re portdefinition' > <Description>My Report</Description> <Widt >6.5in</Widt > <PageHeig t> llin</PageHeight> <PageWidt >8.5in</PageWidt > <LeftMargin> lin</Lef Margin> <Rig tMargin> lin</RightMargin> <TopMargin> lin</TopMargin> <BottomMargin> lin</BottomMargin> <DataSources>
<DataSource Name="DataSourcel"> <CoπnectionProperties> <DataProvider>OLEDB</DataProvider> <ConnectString>Provider=SQLOLEDB.l;Initial Catalog=Northwind;Data Source=(local)</ConnectString> <IntegratedSecurity>false</IntegratedSecurity> <Prompt>Enter UserlD and Password</Prompt> </ConnectionProperties> </DataSource> </DataSources> <DataSets>
<DataSet Name="QRYl"> <Fields>
<Field Name="CompanyName"> <DataField>CompanyName</DataField> </Field> <Field Name="SaleAmount"> <DataField>SaleAmount</DataField> </Field> <Field Name="OrderID"> <DataField>OrderID</DataField> </Field> <Field Name="ShippedDate"> <DataField>ShippedDate</DataField> </Field> </Fields> <Query>
<DataSourceName>DataSourcel</DataSourceName> <CommandText>SELECT [CompanyName], [SaleAmount], [OrderlD], [ShippedDate] FROM [dbo]. [Sales Totals by Amount] ORDER BY [CompanyName] </CommandText> <Timeout>30</Timeout> Query> </DataSet> </DataSets>
<Body>
<Height>2in</Height>
<Style> C5 o
© o o
H U α.
Figure imgf000024_0001
I I I I I I
C5
©
©
© ©
H U α.
Figure imgf000025_0001
</Textbox> </ReportItems> </TableCell> <TableCell> <ReportItems>
<Textbox Name="Textboxl6"> <Height>0.21in</Height> <Width> 100pt</Width> <Top>0in</Top> <Left>0in</Left> <Style> <BackgroundColor> = iif(rownumber(nothing) mod 2,"GhostWhite","Silver" )</BackgroundColor> <FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> < FontSize> 10pt</FontSize> <FontWeight> Normal </FontWeig t> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style> <Value> = Fields!ShippedDate.Value</Value> <CanGrow>true</CanGrow> <CanShrink>false</CanShrink> </Textbox> </ReportItems> </TableCell> </TableCells> </TableRow> </TableRows> </Details>- <Header> <RepeatOnl\lewPage>true</RepeatOnl\lewPage> <TableRows> <TableRow>
<Height>.19in</Height> <TableCells> <TableCell> <ReportItems>
<Textbox Name="Textbox5"> <Height>0.21in</Height> <Width> 100pt</Width> <Top>Oin</Top> <Left>Oin</Left> <Style>
<BackgroundColor>Silver</BackgroundColor> <FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> <FontSize>10pt</FontSize> <FontWeight>Bold</FontWeight> <TextAlign>Center</TextAlign> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style> <Value>CompanyName</Value>
<CanGrow>true</CanGrow> <CanShrink>false</CanShrink> </Textbox> </ReportItems> </TableCell> <TableCell> <ReportItems>
<Textbox Name="Textbox9"> <Height>0.21in</Height> <Width> 100pt</Width> <Top>0in</Top> <Left>Oin</Left> < Style >
<BackgroundColor>Silver</BackgroundColor> <FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> <FontSize> 10pt</FontSize> <FontWeight>Bold</FontWeight> <TextAlign>Center</TextAlign> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style> <Value>SaleAmount</Value> <CanGrow>true</CanGrow> <CanShrink>false</CanShrink> </Textbox> </ReportItems> </TableCell> <TableCell> <ReportItems>
<Textbox Name="Textboxl3"> <Height>0.21in</Height> <Width> 100pt</Width> <Top>0in</Top> <Left>Oin</Left> <Style>
<BackgroundColor>Silver</BackgroundColor> <FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> <FontSize> 10pt</FontSize> <FontWeight>Bold</FontWeight> <TextAlign> Center </TextAlign> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style> <Value>OrderID</Value>
<CanGrow>true</CanGrow>
<CanShrink>false</CanShrink> </Textbox> </ReportItems> </TableCell> <TableCell> <ReportItems>
<Textbox Name= Textboxl7 "> <Height>0.21in</Height> <Width> 100pt</Width> <Top>Oin</Top> <Left>Oin</Left> <Style>
<BackgroundColor>Silver</BackgroundColor> <FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> <FontSize> 10pt</FontSize> <FontWeight>Bold</FontWeight> <TextAlign>Center</TextAlign> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style> <Value>ShippedDate</Value> <CanGrow>true</CanGrow> <CanShrink>false</CanS rink> </Textbox> </ReportItems> </TableCell> </TableCells> </TableRow> </TableRows> </Header> <TableColumns> <TableColumn> <Width> 1.5in</Width> </TableColumn> <TableColumn> <Width> 1.5in</Width> </TableColumn> <TableColumn> <Width>1.5in</Width> </TableColumn> <TableColumn> <Width> 1.5in</Width> </TableColumn> </TableColumns> <TableGroups> <TableGroup> <Header>
<RepeatOnNewPage>false</RepeatOnNewPage> <TableRows> <TableRow>
<Height>.19in</Height>
<TableCells>
<TableCell>
<ColSpan>4</ColSpan>
<ReportItems>
<Textbox Name="Textbox20">
<Heig t>0.21in</Height>
<Width> 100pt</Width>
<Top>Oin</Top>
<Left>Oin</Left>
<Style>
<BackgroundColor>LightGrey</BackgroundColor>
<FontStyle>Normal</FontStyle>
<FontFamily>Arial</FontFamily>
<FontSize> 10pt</FontSize>
<FontWeight>Bold</FontWeight>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom> <Color>Black</Color> </Style>
<Value> ="CompanyName" & Fields!CompanyName.Value</Value>
<CanGrow>true</CanGrow>
<CanShrink>false</CanShrink> </Textbox> </ReportItems> </TableCell> </TableCells> </TableRow> </TableRows> </Header> <Grouping Name="Groupl"> <PageBreakAtStart>false</PageBreakAtStart> <PageBreakAtEnd>false</PageBreakAtEnd> <GroupExpressions> <GroupExpression> = Fields!CompanyName.Value</GroupExpression> </GroupExpressions> </Grouping> </TableGroup> </TableGroups> <FillPage>true</FillPage> </Table> </ReportItems> </Body> <PageFooter> <Height>.5in</Height> <PrintOnFirstPage>true</PrintOnFirstPage> <PrintOnLastPage>true</PrintOnLastPage> <ReportItems>
<Textbox Name="Textbox2"> <Height>20pt</Height> <Top>.2in</Top> <Left>Oin</Left> <Style> < FontStyle> Normal </FontStyle> <FontFamily>Arial</FontFamily>
<FontSize> 10pt</FontSize>
<FontWeight>Normal</FontWeight>
<TextAlign>Right</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom> </Style> <Value>="Page: " & Globals.PageNumber</Value> <CanGrow>true</CanGrow> <CanShrink>false</CanShrink> </Textbox> <Textbox Name="Textbox3"> <Height>20pt</Height> <Top>.2in</Top> <Left>Oin</Left> <Style>
<FontStyle>Normal</FontStyle> <FontFamily>Arial</FontFamily> <FontSize> 10pt</FontSize> <FontWeight> Normal </FontWeight> <TextAlign>Left</TextAlign> <PaddingLeft>2pt</PaddingLeft> <PaddingRight>2pt</PaddingRight> <PaddingTop>2pt</PaddingTop> <PaddingBottom>2pt</PaddingBottom> </Style> <Value>=Format(Globals!ExecutionTime,"d")</Value> <CanGrow>true</CanGrow> <CanShrink>false</CanShrink> </Textbox> </ReportItems> <Style>
< FontStyle > Normal </FontSty le > <FontFamily>Arial</FontFamily> <FontSize> 10pt</FontSize> <FontWeight>Normal</FontWeight> </Style> </PageFooter> <Custom xmlns= "http://crb.cizer.com"> <CurrentTextboxID>20</CurrentTextboxID> <CurrentTableID>l</CurrentTableID> <CurrentImageID>0</CurrentImageID> <QQCustom>
<DSNName>Northwind</DSNName> <DataSourceType>2</DataSourceType>
<DataSourceName>dbo.Sales Totals by Amount</DataSourceName> <SQLText /> <QQQuery>
<QQQueryField Name="CompanyName"> <Selected>true</Selected> <Alias>CompanyName</Alias> <Width> 1.5</Width> <Operator>none</Operator> <DataType>System.String</DataType>
<Filter />
<SortBy>false</SortBy>
<GroupBy>true</GroupBy>
<Sum>false</Sum> </QQQueryField> <QQQueryField Name="SaleAmount"> <Selected>true</Selected> <Alias>SaleAmount</Alias> <Width>1.5</Width> <Operator>none</Operator> <DataType>System.Decimal</DataType> <Filter />
<SortBy>false</SortBy> <GroupBy>false</GroupBy> <Sum>false</Sum> </QQQueryField> <QQQueryField Name="OrderID"> <Selected>true</Selected> <Alias>OrderID</Alias> <Width> 1.5</Width> <Operator>none</Operator> <DataType>System.Int32</DataType> <Filter />
<SortBy>false</SortBy> <GroupBy>false</GroupBy> <Sum>false</Sum> </QQQueryField> <QQQueryField Name="ShippedDate"> <Selected>true</Selected> <Alias>ShippedDate</Alias> <Width>1.5</Widt > <Operator>none</Operator> <DataType>System.DateTime</DataType> <Filter />
<SortBy>false</SortBy> <GroupBy>false</GroupBy> <Sum>false</Sum> </QQQueryField> </QQQuery> <QQProcedure /> <QQReportOptions>
<ReportTitle>Sales By Company</ReportTitle> <PageOrientation>Portrait</PageOrientation>
<FirstAlternateBandingColor>GhostWhite</FirstAlternateBandingColor> <SecondAlternateBandingColor>Silver</SecondAltemateBandingColor> <ShowPageNumber>true</ShowPageNumber> <ShowReportDate>true</ShowReportDate> <ShowReportDateTime>false</ShowReportDateTime> <FontSize> 10</FontSize> <FontFamily>Arial</FontFamily>
<ColumnHeaderBackgroundColor>Silver</ColumnHeaderBackgroundColor> <GroupHeaderBackGroundColor>LightGrey</GroupHeaderBackGroundColor> <GroupFooterBackGroundColor>LightGrey</GroupFooterBackGroundColor> <ColumnFooterBackgroundColor>Silver</ColumnFooterBackgroundColor> <GroupPageBreak>false</GroupPageBreak>
<GroupIndent>true</GroupIndent>
< Record CountType>none</RecordCountType>
<DisplayGrid>false</DisplayGrid> </QQReportOptions> </QQCustom> </Custom> </Report>
ci zerReportvi ewer ai n [2]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transi tional//ENM > <HTML> <HEAD> <ti tl e>Ci zerReportvi ewerMai n</titl e> <meta name="GENERATOR" Content="Microsoft Visual Studio
Figure imgf000033_0001
<script language="javascript"> function doPostBack(eventτarget, eventArgument) { var thefor ; if (window. navigator. appName. toLowerCase() .indexof("netscape") > -1) { theform = document. forms ["Forml"] ; } else { theform = document .Forml; theform. EVENTTARGET. value = eventTarget . spl i t("$") . oi π('* : ") ; theform. EVENTARGUMENT.value = eventArgument; theform. submitO; } // --> </script> <scri pt LANGUAGE=' DavaScri pt ' src='CizerReportvi ewer . s 'x/scri pt>
Figure imgf000033_0002
Figure imgf000034_0001
styl e="background-col or : S ver ; backgroun - repeat : Repeat ; paddi ng-1 eft : 2pt
Figure imgf000035_0001
Figure imgf000036_0001
Figure imgf000037_0001
sty e= ac ground-repeat : epeat; paddi ng-1 eft :2pt; paddi ng-top: 2pt; paddi ng-ri Ci zerReportvi ewerMai n [2] qht : 2pt ; paddi ng-bottom : 2pt ; font-styl e : Normal ; f ont:f ami 1 y : An al ; font-si ze : 10 pt • font- ei ghtΪNormal ; text-decorati on : None ; di recti on : LTR ; uni code-bi di : Norma 1 text-al i gn : right ;wri ting-mode: 1 r-tb; verti cal -al ι gn :Top; color : Black; border
-styl e : one ; background-col or : Si 1 ver ; word-wrap : break-word ; xDiv styl e="WlDTH : 100%; overflow-x : hi dden">l/16/1997 12 : 00 : 00 AM</DlVχ/TDx/TRxTR styl e="HEIGHT: 4.83mm"xTD C0LSPAN= 4 stvl e="background-col or : #d3d3d ; background-repeat : Repeat ; paddi ng-1 eft : 2pt ; p addi nq-top : 2pt ; paddi ng- ri ght : 2pt ; paddi ng-bottom : 2pt ; font-styl e : Normal ; f ont- f ami 1 y ■ Ari al ; font-si ze : lOpt ; font-wei ght : Bol d ; text-decorati on : None ; di recti on ■ LTR ; uni code-bi di : Normal ; text-al i gn : Tef t ; ri ti ng-mode : 1 r-tb ; verti cal -al i gn : Top ■ color : Bl ack; border-styl e : None ; word-wrap : break-word ; xDiv styl e="WlDTH : 100%; overf 1 ow-x : hi dden">companyNameErnst Handel </Dlvx/TDx/TRxTRχTD styl e="HEIGHT : 4.83mm"
-Sty i e : None ; ua.c_K.yr uuπu-t.υ ι υι . vji iui WI I i UC , ΪΪU I u » ι αu . ui c-ux. »»<_» ■ >-• , ^^.^J.. styl e="wiDTH : 100%; overf1ow-x: hi dden">Ernst Handel</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt; paddi ng-top : 2pt ; paddi ng-n ght : 2pt; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze: 10 pt ; font-weight : Normal ;text-decorati on : None ; di recti on : LTR; uni code-bidi : Norma
1 ;text-al i gn : ri ght ;wri ti ng-mode : 1 r-tb ; verti cal -al i gn :Top; color : Bl ack; border
-style: None;background-coTor:Ghostwhite;word-wrap: break-word ;"><DIV styl e="WIDTH : 100%; overf1ow-x: hi dden">6635.27</DIVx/TDxTD styl e="background- repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght: 2pt; padding-bottom: 2pt ; font-style:Normal ;font-fami1y:Arial ;font-size: 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; unicode-bi di : Norma
1 ; text-al i gn : right ;wri ti ng-mode : 1 r-tb;verti cal -al i gn :Top; color : Bl ack; border -style: None ;background-coTor:Ghostwhite;word-wrap: break-word ;"><DIV styl e="WlDTH : 100%; overf1ow-x: hidden">10776</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ;font-fami 1y:Ari al ; font-size: 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norma 1 ;text-al i gn : ri ght ;wri ti ng-mode : 1 r-tb ; verti cal -al i gn :Top; color: Bl ack; border -style: None ;background-coTor:Ghostwhite;word-wrap: reak-word ;"><DIV styl e="WlDTH : 100%;overf1 ow-x: hi dden">12/18/1997 12 : 00: 00
AM</DlVx/TDx/TRxTRxTD styl e="HEIGHT: 4.83mm" styl e="background- repeat : Repeat ; padding-1 eft : 25pt ; paddi ng-top: 2pt ; paddi ng-r i ght : 2pt ; paddi ng-bottom: 2pt ; font-style : Normal ; font-fami 1y:Ari al ;font-si ze: 1 Opt ; font-wei ght: Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norm al ; text-al ign : 1 eft ;wri ti ng-mode : 1 r-tb;verti cal -al i gn :Top ; color: Bl ack; border -styl e: None ; background-coTor : si 1ver ;word-wrap : break-word; "xDiv styl e="wiDTH : 100%; overf1ow-x : hi dden">Ernst Handel </DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; padding-top: 2pt; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Arial ; font-si ze : 10 pt ; font-wei ght : Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norma 1 ; text-al i gn : π ght ;wπ ti ng-mode : 1 r-tb; verti cal -al i gn :Top; color : Black; border -styl e: None; background-coTor: si 1ver;word-wrap : break-word ; "xDiv styl e="WlDTH : 100%; overf1ow-x : hidden">2713.5</DlVx/TDxTD style="background-repeat: Repeat ; padding-1eft: 2pt ; paddi ng-top : 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Arial ; font-si ze : 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norma 1 ; text-al i gn : ri ght ;writi ng-mode : 1 r-tb ;verti cal -al ign :Top ; color : Black; border -styl e: None; background-coTor : Si 1ver ;word-wrap: break-word ; "xDiv styl e="WlDTH : 100%;overf1ow-x : hi dden">10402</DlVx/TDxTD styl e="background-repeat : Repeat ; padding-1 eft : 2pt ; paddi ng-top: 2pt; paddi ng-ri ght : 2pt; paddi ng-bottom: 2pt ; font-styl e : ormal ; font-fami1y:Arial ; font-si ze: 10 pt ; font-wei ght : Normal ; text-decoration : None ; di recti on : LTR; uni code-bi di : Norma 1 ;text-al i gn : ri ght ;writi ng-mode: 1 r-tb;verti cal -al i gn :τop; color : Black; border -styl e: None ; background-coTor : Si 1ver;word-wrap: break-word ; "XDIV styl e="wiDTH : 100%; overf1ow-x: hi dden">l/10/1997 12 : 00: 00 AM</DIVx/TDx/TR><TRxTD styl e="HElGHT: 4.83mm" styl e="background-repeat : Repeat ; paddi ng-1 eft : 25pt ; paddi ng-top: 2pt ; paddi ng-r ight : 2pt ; paddi ng-bottom: 2pt; font-style :Normal ; font-fami 1y:Arial ; font-si ze : 1 Opt ; font-weight : Normal ; text-decoration : None ; di rection : LTR ; uni code-bi di : Norm al ; text-al ign : 1 eft ;writi ng-mode : 1 r-tb;verti cal -al i gn :Top; color : Black; border -styl e: None ; background-coTor :Ghostwhite ;word-wrap: break-word ; "xDiv
Figure imgf000039_0001
-styl e : None; background-coTor :Ghostwhite ;word-wrap: Break-word ; "xDiv
Figure imgf000040_0001
pt ; font-weight:Normal ;text-decoration : one; di recti on : LTR; uni code-bid : Norma Ci zerReportvi ewerMai n [2] 1 •text-al i gn : right ;wri ti ng-mode :1 r-tb; vertical -align:τop; color: Black; border -styl e : None ; background-color : Si 1ver ;word-wrap : break-word ; "xDIV styl e="WlDTH : 100%; overf1ow-x : hi dden">4985.5</DlVχ/TDxTD styl e="background- repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-π ght : 2pt ; paddi ng-bottom: 2pt ; font-style : Normal ; font-fami ly :An al ; font-size: 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norma 1 ; text-al i gn : ri ght ;wri ti ng-mode : 1 r-tb ; verti cal -al i gn -.Top ; color : Black ; border -styl e: None; background-color : Si 1ver ;word-wrap : break-word ; "XDIV styl e="wiDTH : 100%; overf1ow-x: hi dden">10634</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ;paddi ng-n ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami ly:Ari al ; font-si ze : 10 pt; font-weight : Normal ; text-decoration : None ; di rection : LT ; uni code-bidi : Norma 1 ; text-al i gn : ri ght ;wri ti ng-mode : 1 r-tb ; verti cal -align :τop ; color : Black; border -styl e: None ; background-coTor : Si 1ver ;word-wrap: break-word ; "xDIV styl e="WlDTH : 100%; overf1ow-x: hi dden">8/21/1997 12 :00: 00 AM</DIVx/TDx/TRxTRxTD styl e="HElGHT: 4.83mm" styl e="background-repeat : epeat ; paddi ng-1eft : 25pt ; padding-top : 2pt ; paddi ng-r i ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:An" al ;font-si ze: 1 Opt; font-wei ght: Normal ; text-decoration : None; di rection : LTR; uni code-bi di : Norm al ;text-al ign : 1eft ;wri ti ng-mode: 1 r-tb ;verti cal -al ign :Top; color : Bl ac ; border -styl e: None ; background-coTor:Ghostwhite;word-wrap : break-word ; "xDIV styl e="WIDTH : 100%;overf1ow-x : hi dden">Fol i es gourmandes</DlVx/TD><TD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top : 2pt ; paddi ng-ri ght : 2pt; paddi ng-bottom: 2pt; font-styl e :Normal ; font-fami 1y :Ari al ;font-size : 10 t ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norma
? ; text-al i gn : right ;wri ti ng-mode : 1 r-tb ; verti cal -al ign :Top; color : Black; border -styl e : None ; background-coTor :Ghostwhite;word-wrap: break-word ; "xDIV styl e="WIDTH : 100%;overf1ow-x: hi dden">3687</DlVx/TDxTD style="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze: 10 pt ; font-weight :Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norma 1 ; text-al ign : right;wri ti ng-mode : 1 r-tb; erti cal -al ign :Top; color : Black; border -style: None;background-coTor:Ghostwhite;word-wrap: reak-word ;"><DIV styl e="WlDTH : 100%;overf1ow-x : hi dden">10789</DIVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght: 2pt; padαi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Arial ; font-si ze: 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi :Norma I ; text-al i gn : ri ght ;writi ng-mode : 1 r-tb ;verti cal -al i gn :Top; col or : Black; border -styl e:None ; background-coTor:Ghostwhi te;word-wrap: Break-word ; "xDIV styl e="WIDTH : 100%;overf1ow-x : hidden">12/31/1997 12 : 00: 00 AM</DIVx/TDx/TRxTR Style="HEIGHT:4.83mm"xTD COLSPAN="4" styl e="background-color :#d3d3d3 ; background-repeat : Repeat ; paddi ng-1 eft : 2pt; p addi ng-top : 2pt ; paddi ng-right : 2pt ; paddi ng-bottom: 2pt ; font-styl e : ormal ; font- fami 1y:Ari al ; font-si ze : lOpt ; font-weight : Bol d ;text-decoration :None;di rection : LTR; uni code-bidi : Normal ; text-al ign : Teft ;wri ti ng-mode : 1 r-tb ; verti cal -al i gn : Top ; color: Bl ack; border-styl e: None ;word-wrap : break-word ; "xDiv styl e="wiDTH : 100%; overf1ow-x: hidden">CompanyNameFol k och f&#228 ; HB</DIVx/TDx/TR><TRxTD style="HElGHT: 4.83mm" styl e="background-repeat : Repeat ; paddi ng-1 eft : 25pt ; padding-top : 2pt; paddi ng-r ight : 2pt; paddi ng-bottom: 2pt ; font-styl e: Normal ; font-fami 1y:Ari al ; font-si ze : 1 Opt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi : Norm al ; text-al ign : 1 eft;writi ng-mode : 1 r-tb;verti cal -al ign:Top; color: Black;border -styl e: None; background-coTor : Si 1ver;word-wrap : break-word ; "XDIV styl e="WlDTH: 100%; overflow-x: hi dden">Folk och f&#228; HB</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top : 2pt ; paddi ng-ri ght : 2pt; paddi ng-bottom: 2pt ; font-styl e : Normal ;font-fami1y:Arial ;font-size: 10 t ; font-weight : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi : Norma
1; text-al i gn : ri ght ;wri ti ng-mode : 1 r-tb;verti cal -al i gn :Top; color: Black; border -styl e: None ; background-coTor : Si 1ver;word-wrap: break-word ; "xDIV style="WIDTH : 100%; overf1ow-x : hidden">4337</DIVx/TDxTD styl e="background-repeat: Repeat ; paddi ng-1eft : 2pt ; paddi ng-top : 2pt;paddi ng-ri ght : 2pt ; padαi ng-bottom: 2pt ; font-style : Normal ; font-fami 1y:Arial ; font-si ze : 10 pt ; font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi :Norma I ;text-al ign : right ;wri ti ng-mode: 1 r-tb;verti cal -al ign :Top; color: Black; border -styl e: None ; background-coTor: Si 1ver ;word-wrap: break-word ; "xDIV sty Ie="WlDTH : 100%; overf1ow-x : hi dden">10762</DIVx/TD><TD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top : 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-style : Normal ; font-fami 1y:Ari al ; font-si ze: 10
Figure imgf000042_0001
Figure imgf000043_0001
1 ;text-al ign : ri ght ;writing-mode : 1 r-tb;verti cal -al ign :Top ; color : Bl ack; border
Figure imgf000044_0001
sty e= ackground-repeat: epeat; pa d ng- eft : 2pt ; paddi nngg--ttoopp:: 2pt ; paddi
Figure imgf000045_0001
Figure imgf000046_0001
Figure imgf000047_0001
Figure imgf000048_0001
;text-al ign : right ;writi ng-mode : 1 r-tb;verti cal -al i gn :Top ; color : Black; border Ci zerReportvi ewerMai n [2] -styl e : None ; background-col or: Si 1ver ;word-wrap : break-word ; "xDIV styl e="WIDTH : 100%; overflow-x : hidden">10618</DlVx/TDxTD style="background-repeat : Repeat;padding-1eft : 2pt ; padding-top: 2pt;padding-ri qht ■ 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1 y:Arial ; font-si ze: 10 pt • font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bi di : Norma 1 ; text-al i gn : ri ght ;writi ng-mode : 1 r-tb ; verti cal -al i gn :Top ; color : Bl ack; border -styl e : None ; background-color : si 1ver ;word-wrap : break-word ; "xDiv styl e="wiDTH : 100%; overfl ow-x : hi dden">8/8/1997 12 : 00: 00 AM</DIVx/TDx/TRxTR><TD styl e="HEIGHT:4.83mm" styl e="background-repeat : Repeat ; paddi ng-1 eft : 25pt ; paddi ng-top : 2pt ; paddi ng-r ight :2pt; paddi ng-bottom:2pt;font-style:Normal ; font-family:Anal ;font-size:l Opt • font-wei ght : Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norm al ; text-al ign : 1 eft ;wri ti ng-mode :1 r-tb;verti cal -align:Top; color: Black; border -styl e : None ; background-color : Ghostwhi te;word-wrap: break-word; "xDIV styl e="WlDTH : 100%; overflow-x : hidden">M&#232 ; re Pai 11 arde</DlVχ/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze : 10 pt; font-weight : Normal ; text-decoration : None ;di recti on : LTR; uni code-bi di : Norma 1 ;text-al ign: right ;writi ng-mode: 1 r-tb;verti cal -al ign:Top; color: Black;border -styl e: None ; background-color :Ghostwhite;word-wrap: Break-word; "xDiv styl e="wiDTH : 100%; overf1ow-x: hidden">4109.7</DIVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-size : 10 pt; font-wei ght : Normal ; text-decoration : None; di rection : LTR; uni code-bi d : Norma 1 ; text-al i gn : right ;writi ng-mode: 1 r-tb;verti cal -al gn :Top; color: Black; border -styl e: None ; background-coTor:Ghostwhite;word-wrap : Break-word; "xDIV style="WlDTH: 100%;overf1ow-x: hidden">10605</DIVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-to : 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e: Normal ; font-fami 1y:Arial ; font-size: 10 pt ; font-wei ght : Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norma 1 ; text-al i gn : ri ght ;wri ti ng-mode: 1 r-tb;verti cal -al i gn :Top; color: Black; border -styl e: None ; background-coTor :Ghostwhite;word-wrap : Break-word; "xDIV styl e="WlDTH : 100%; overf1ow-x: hi dden">7/29/1997 12 : 00: 00 AM</DIVx/TDx/TRxTR Styl e="HEIGHT:4.83mm"xTD COLSPAN="4" styl e="background-color:#d3d3d3 ; background-repeat : Repeat; padding-1eft :2pt ; p addi ng-top: 2pt ; paddi ng-ri ght: 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font- fami 1y:Ari al ; font-si ze: lOpt; font-weight: Bold ; text-decoration : None; di rection : LTR; uni code-bi di : Normal ; text-al i gn : Teft ;writi ng-mode : 1 r-tb;verti cal -al ign : Top; color : Black; border-style: None ;word-wrap: break-word ; "xDIV style="wiDTH : 100%;overf1ow-x: hi dden">CompanyNamePi ccolo und menr</DlVx/TDx/TR><TR style="HEIGHT: 4.83mm"xTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 25pt ; paddi ng-top: 2pt ; paddi ng-r ιght:2pt; paddi ng-bottom:2pt;font-style:Normal ; font-family:Aria! ;font-si ze:l Opt ; font-wei ght : Normal ; text-decoration :None; di rection : LTR; uni code-bidi : Norm al ;text-al ign : 1 eft ;wri ti ng-mode : 1 r-tb;verti cal -al i gn :Top; col or: Black; border -styl e: None ; background-coTor : si 1ver;word-wrap: break-word ; "xDIV styl e="wiDTH : 100%; overflow-x : hi dden">Piccolo und mehr</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1eft : 2ρt ; paddi ng-top: 2pt; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze■ 10
?-t ; font-weight : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi : Norma ;text-align : right;writing-mode: 1 r-tb;vertical -align :Top; color: Black;border -styl e: None ; background-coTor: si 1ver;word-wrap : break-word; "xDiv styl e="WlDTH : 100%; overf1ow-x : hi dden">4180</DlVx/TD><TD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-style : Normal ; font-fami 1y:AH' al ; font-si ze : 10 pt ; font-weight : Normal ; text-decoration : None ;di rection : LTR; uni code-bidi : Norma 1 ; text-al ign : right ;writi ng-mode: 1 r-tb ; verti cal -al i gn :Top; col or: Black; border -styl e : None ; background-coTor: Si 1ver ;word-wrap : break-word ; "xDIV style="WlDTH: 100%;overf1ow-x: hidden">10530</DlVx/TD><TD styl e="background-repeat : epeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt; paddi ng-ri ght : 2pt ; padding-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze: 10 pt ; font-weight : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi : Norma 1 ; text-al ign : right ;wri ti ng-mode: 1 r-tb; verti cal -al i gn :Top; color: Bl ack; border -styl e:None ; background-coTor: si 1ver ;word-wrap : break-word ; "xDIV styl e="WIDTH : 100%;overflow-x: hidden">5/12/1997 12 : 00:00 AM</DIVx/TDx/TRxTR style="HEIGHT:4.83mm"xTD COLSPAN="4" style="background-color:#d3d3d3 ; background-repeat :Repeat; padding-1 eft : 2pt ; p addi ng-top : 2pt; paddi ng-ri ght: 2pt; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-
Figure imgf000050_0001
Figure imgf000051_0001
Figure imgf000052_0001
Figure imgf000053_0001
Figure imgf000054_0001
Figure imgf000055_0001
Figure imgf000056_0001
;text-al ign : ri gh ;wri ti ng-mode : 1 r-tb;verti cal -al ign :τop ; color: Black; border
Figure imgf000057_0001
pt ; font-wei ght : Normal ; text-decorati on : None ; di recti on : LTR ; uni code-bi di : Norma Ci zerReportvi ewerMai n [2] 1 ; text-al ign : right ;wri ti ng-mode :1 r-tb;verti cal -align:Top; color: Black; border -styl e: None ; background-color :Ghostwhi te ;word-wrap : break-word ; "xDIV styl e="WlDTH : 100%; overf1ow-x: hi dden">492 .14</DlVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze : 10 pt; font-wei ght:Normal ; text-decorati on : one ; di recti on : LTR; uni code-bidi : Norma 1 ; text-al i gn : riqht ;wri ti ng-mode :1 r-tb;verti cal -align:Top; color -.Black; border -styl e: None ; background-color :Ghostwhi te ;word-wrap : break-word; "xDiv style="wiDTH : 100%;overflow-x: hi dden">10440</DlVx/TDxTD style="background-repeat: Repeat;paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri gh : 2pt ; paddi ng-botto : 2pt ; font-style : Normal ; font-fami 1y:Ari al ;font-si ze: 10 pt ; font-wei gh : Normal ; text-decoration : None ; di recti on : LTR; uni code-bidi : Norma 1 ; text-ali gn : ri ght ;wri ti ng-mode : 1 r-tb; erti cal -al i gn :Top; col or : Black; border -style: None; background-color:Ghostwhite ;word-wrap: break-word ; "xDIV styl e="wiDTH: 100%;overflow-x: hi dden">2/28/1997 12:00:00 AM</DIVx/TDx/TRxTRxTD style="HElGHT:4.83mm" styl e="background-repeat : Repeat ; padding-1 eft : 25pt ; paddi ng-top: 2pt ; padding-r ight : 2pt ; paddi ng-bottom: 2pt; font-styl e:Normal ; font-fami ly :Ari al ;font-size: 1 Opt ; font-weight : Normal ; text-decoration : None; di rection : LTR; uni code-bi di : orm a I ;text-al i gn : 1 eft ;wri ti ng-mode:1 r-tb;vertical -al gn :Top ; color: Bl ack; border -style: one; background-color: Si Tver;word-wrap: break-word;"><DIV styl e="wiDTH: 100%; overflow-x: hi dden">save-a-lot Markets</DiVχ/TDxTD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt; paddi ng-ri ght : 2p ; paddi ng-bottom: 2pt ; font-styl e :Normal ; font-fami1y:Arial ;font-si ze: 10 t ; font-weight:Normal ;text-decoration: None;di rection : LTR; uni code-bidi :Norma
? ; text-al ign : right ;writing-mode : 1 r-tb;verti cal -al gn :Top ; color : Black; border -styl e: None ; background-color : Si 1ver ;word-wrap: break-word ; "xDIV style="wiDTH : 100%;overflow-x: hi dden">5256.5</DlVx/TDxTD styl e="background-repeat : Repeat; padding-1eft: 2pt; paddi ng-top: 2pt; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Arial ; font-size: 10 pt;font-wei ght :Normal ;text-decoration : None;di rection : LTR; unicode-bidi : Norma I ;text-al ign : ri ght; riti ng-mode: 1 r-tb; erti cal -ali gn :Top; col or: Black; border -style:None; background-coTor: Si1ver;word-wrap:break-word; "xDIV styl e="wiDTH : 100%; overf1ow-x : hidden">10678</DlVx/TDxTD style="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt;font-style: Normal ;font-fami 1y:Ari al ;font-si ze: 10 pt ; font-weight: Normal ;text-decoration : None;di rection : LTR; uni code-bidi : Norma 1 ;text-al i gn : ri ght ;wri ti ng-mode :1 r-tb; verti cal -al ign :Top ; color: Bl ack; border -style:None; background-coTor : Si 1ver ;word-wrap:break-word ; "xDIV styl e="wiDTH : 100%; overf1ow-x : hidden">10/16/1997 12 :00: 00 AM</DIVx/TDx/TRxTR><TD styl e="HElGHT: 4.83mm" style="background-repeat : Repeat ; paddi ng-1 eft: 25pt ; paddi ng-top : 2pt ; padding-r ight : 2pt ; padding-bottom: 2pt; font-style:Normal ;font-fami1y:Ari al ;font-size: 1 Opt; font-wei ght : Normal ; text-decoration :None ; di rection : LTR; uni code-bidi :Norm aI ;text-align :1eft; riting-mode:1 r-tb;verti cal -al gn:Top;color: Black; border -style:None; background-coTor:Ghostwhi te ;word-wrap: Break-word ; "xDIV styl e="WIDTH: 100%; overflow-x: hidden">save-a-lot Markets</DiVx/TDxTD style="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; padding-top: 2pt; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-style : Normal ; font-fami 1y:Arial ; font-si ze: 10 ; font-weight: Normal ;text-decorati on : None; di recti on : LTR,; uni code-bidi :Norma ϊ ; text-al ign : right ;writi ng-mode : 1 r-tb;verti cal -al ign :Top; color : Bl ack; border -styl e: None ; background-coTor :Ghostwhite;word-wrap: Break-word ; "xDIV style="wiDTH: 100%;overf1ow-x: hi dden">3082</Divx/TD><TD style="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami ly:Arial ; font-si ze: 10 pt;font-wei ght : Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norma 1 ;text-align: right;writing-mode:1 r-tb;verti cal -align :Top;color: Black; border -styl e :None ; background-coTor:Ghostwhite;word-wrap: Break-word ; "XDIV styl e="wiDTH: 100%;overflow-x: hidden">10757</Div></TDxTD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-style: Normal ; font-fami1y:Ari al ; font-si ze: 10 pt ; font-weight : Normal ; text-decoration : None; di rection : LTR; uni code-bidi : Norma 1 ; text-al ign : ri ght ;wri ti ng-mode : 1 r-tb;verti cal -al ign :Top; color : Black; border -style:None; background-coTor :Ghostwhi te;word-wrap: Break-word ; "xDIV styl e="WlDTH : 100%;overf1ow-x: hidden">12/15/1997 12 :00:00 AM</DlVx/TDx/TRxTRxTD styl e="HElGHT: 4.83mm" style="background-repeat : Repeat ; paddi ng-1 eft : 25pt ; paddi ng-top : 2pt ; padding-r ight : 2pt ; paddi ng-botto : 2pt ;font-style:Normal ; font-fami1y:Ari al ; font-si ze : 1
Figure imgf000059_0001
style= ackgroun -repeat: Repeat; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri
Figure imgf000060_0001
1 ;text-align: ri ght ;writi ng-mode: r-tb; erti cal -al gn :Top; color : Bl ack; border Ci zerReportvi ewerMai n [2] -styl e : None ; background-color: Si 1ver ;word-wrap : break-word ; "xDiv styl e="wiDTH : 100%; overf1ow-x : hi dden">10518</DlVx/TDxTD styl e="background-repeat : Repeat ; padding-1 eft : 2pt; paddi ng-top: 2pt; paddi ng- ght : 2pt ; paddi ng-bottom: 2pt ; font-styl e : Normal ; font-fami 1y:Ari al ; font-si ze: 1( pt ; font-weight : Normal ; text-decorati on : None ; di rection : LTR; uni code-bi di : Norm; 1 ; text-al i gn : ri ght ; ri ti ng-mode : 1 r- b ;verti cal -al gn :Top ; color : Black; bordei -style: None; background-color:Si Tver ;word-wrap: break-word;"><DIV style="WlDTH:100%;overflow-x:hidden">5/5/1997 12:00:00 AM</DIVx/TDx/TRxTR Styl e="HEIGHT: 4.83mm"xTD COLSPAN="4" style="background-color :#d3d3d3 ; background-repeat : Repeat ; paddi ng-1 eft : 2pt ; r. addi ng-top : 2pt ; paddi ng-ri ght : 2pt; paddi ng-bottom: 2pt ; font-styl e: ormal ; font- fami 1y:Arial ; font-si ze : lOpt ; font-weight : Bol d ; text-decoration : None; di rectior : LTR; uni code-bi di : Normal ; text-al ign : Teft ;writi ng-mode : 1 r-tb; erti cal -al ign : Top; color : Black; border-styl e: None;word-wrap:break-word; "xDIV style="wlDTH: 100%; overflow-x: hidden">CompanyNamevaffel jernet</DIVx/TDx/TP xTRxTD style="HEiGHT:4.83mm" style="background-repeat : Repeat ;paddi ng-1 eft : 25pt ; paddi ng-top : 2pt ; padding-r ignt : 2pt; paddi ng-botto : 2pt;font-style:Normal ;font-fami 1y:Ari al ;font-si ze: 3 Opt ; font-weight : Normal ; text-decoration :None ; di rection : LTR; uni code-bidi : orn al ;text-al i gn : 1 eft ;wri ti ng-mode : 1 r-tb; verti cal -al ign :Top; color: Black; border -style-.None;background-color:Ghostwhite;word-wrap: break-word ;"><DIV styl e="WlDTH : 100%; overf1ow-x: hidden">vaffeljernet</DIVx/TDxTD styl e="background-repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top: 2pt; padding-ri ght : 2pt; paddi ng-botto : 2pt ; font-styl e: Normal ; font-fami 1y:Arial ; font-size : 10 pt ; font-weight : Normal ; text-decoration : one; di recti on: TR; uni code-bi di :Norma 1 ; text-al i gn : ri ght ;writi ng-mode: 1 r-tb;verti cal -al gn :Top; color: Black;border -styl e:None; background-color:Ghostwhite;word-wrap: Break-word ; "xDIV style="WIDTH : 100%;overflow-x: hidden">2518</Divx/TDxTD style="background-repeat : Repeat; padding-1eft: 2pt; paddi ng-top: 2pt;paddi ng-ri ght : 2pt; pad i ng-bottom: 2pt ; font-styl e: Normal ; font-fami 1y:Arial ; font-si ze: 10 pt ;font-wei ght : Normal ; text-decoration : None ; di rection : LTR; uni code-bidi : Norma I ;text-al i gn : right ;writi ng-mode: 1 r-tb;verti cal -al gn :Top; color: Black; border -styl e:None; background-coTor:Ghostwhite;word-wrap : Break-word; "xDIV styl e="WIDTH: 100%; overflow-x: hidden">10465</DlVx/TD><TD style="background-repeat : Repeat ; paddi ng-1 eft: 2pt ; paddi ng-to : 2pt ; padding-ri ght : 2pt ; paddi ng-botto : 2pt; font-style: Normal ; font-fami 1y:Ari al ; font-si ze: 10 pt ; font-weight : Normal ; text-decorati on : None; di rection : LTR; uni code-bi di : Norma 1 ;text-align: right;writing-mode:! r-tb;verti cal -al gn:Top; color: Black; border -style:None; background-col or:Ghostwhite;word-wrap: Break-word;"><DIV styl e="wiDTH : 100%;overf1ow-x: hidden">3/14/1997 12 :00:00 AM</DIVx/TDx/TR><TRxTD styl e="HEIGHT:4.83mm" styl e="background-repeat : Repeat ; paddi ng-1eft : 25pt ; paddi ng-top: 2pt ; padding-r ight : 2pt ; paddi ng-bottom: 2pt ; font-style:Normal ; font-fami 1y:Arial ; font-size : 1 Opt ; font-weight :Normal ; text-decoration :None ; di rection : LTR; unicode-bi di :Norm al ; text-al i gn : 1 eft ;wri ting-mode: 1 r-tb;verti cal -al gn :Top; color: Black;border -styl e:None; background-coTor: Si 1ver;word-wrap : break-word; "xDIV style="wiDTH : 100%; overf1ow-x: hidden">vaffeljernet</DlVχ/TDχTD styl e= background-repeat : Repeat ; padding-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght: 2pt ;paddi ng-bottom: 2pt ; font-style :Normal ; font-fami 1y:Arial ; font-size: 10
?t ; font-weight: Normal ;text-decoration : None; di recti on : LTR; uni code-bi di : Norma ; text-al ign : ri ght ;writi ng-mode : 1 r-tb;verti cal -al i gn -.Top; color : Black;border -styl e:None ; background-coTor: si 1ver ;word-wrap : break-word ; "XDIV styl e="wiDTH: 100%; overflow-x : hi dden">3160.6</DIVX/TDXTD styl e="background-repeat : Repeat ; paddi ng-1eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-botto : 2pt ; font-styl e:Normal ; font-fami 1y:Arial ; font-size: 10 pt; font-weight : Normal ;text-decoration : None;di rection : LTR; uni code-bi di : Norma I ;text-align : ri ght ;writi ng-mode: 1 r-tb;verti cal -al i gn :Top; color: Black; border -styl e:None; background-coTor: si1ver;word-wrap : break-word; "xDIV styl e="wiDTH : 100%;overflow-x: hidden">10688</DIVX/TD><TD styl e="background-repeat : Repeat ; padding-1 eft : 2pt ; paddi ng-top: 2pt ; paddi ng-ri ght : 2pt ; paddi ng-bottom: 2pt ; font-style:Normal ; font-fami 1y:Ari al ; font-size: 10 pt ; font-weight : Normal ;text-decoration : None ; di rection : LTR; uni code-bi di : Norma 1 ;text-align : right ;writing-mode: 1 r-tb;vertical -align :Top; color: Black;border -styl e:None; background-coTor : Si Tver;word-wrap : break-word ; "xDiv styl e="WlDTH : 100%; overf1ow-x: hidden">10/7/1997 12 :00:00 AM</DIVx/TDx/TRxTR Style="HEIGHT:4.83mm"xTD COLSPAN="4" style="background-color:#d3d3d3 ; background-repeat : Repeat ; paddi ng-1 eft : 2pt;p addi ng-top: 2pt; paddi ng-right: 2pt ;padding-bottom: 2pt ;font-style: Normal ; font- Ci zerReportvi ewerMai n [2] styl e="wiDTH : 165 . 10mm"χ/TDχ/TRχTR VALIGN=" top"xTD styl e="HElGHT : 7.06mm' WIDTH="0"x/TDxTD ROWSPAN="2"xTABLE CELLSPACING="0" CELLPADDING="0" L ANG= " e n - U S " xTRxTD styl e="wiDTH : 165. 10mm ; word-wrap : break-word ; HEIGHT : 7 .06mm ; background-col or :l ransparent ; background- repeat : Repeat ; paddi ng-1 eft : 2pt ; paddi ng-top : 2pt ; paddi r g- ri ght : 2pt ; paddi ng-bottom : 2pt ; font-styl e : Normal ; font-f ami 1 y : Ari al ; font-si 2 e : lOpt ; font-wei ght : Normal ; ext-decorati on : one ; di recti on : LTR ; uni code-bi d : N ormal ; text-al i gn : Left ; wri ti ng-mode : 1 r- tb ; verti cal -al i gn : Top ; col or : Bl ack ; bor der-styl e : None ; ">l/16/2004</TDx/TRx/TABLE><TABLE CELLSPACING="0" CELLPADDING="0" LANG="en-US"xTRxTD styl e="wiDTH : 165 .10m ; word-wrap : break-word ; HEIGHT: 7 .06mm; background-col or :τ ransparent ; background- repeat : epeat ; paddi ng-1 eft : 2pt ; paddi ng-top : 2pt ; paddi n g- ri ght : 2pt ; padαi ng-bottom : 2pt ; font-styl e : ormal ; font-f ami 1 y : Ari al ; font-si z e : lOpt ; font-wei ght : Normal ; text-decorati on : None ; di recti on : LTR ; uni code-bi di : N orma l ; text-al i gn : Ri ght ; wri ti ng-mode : 1 r- tb ; erti cal -al i gn : Top ; col or : Bl ack ; bo rder-styl e : None ; ">Page : 1</TDX/TRX/TABLEX/TD></TRXTRXTD Styl e="HEIGHT : 0. 56mm WIDTH="0"X/TDX/TRX/TABLEX/DIVX/TDXTD WIDTH="100%" HEIGHT="0"X/TDX/TRXTRXTD WIDTH="0" HElGHT="100%"x/TDx/TRx/TABLEx/spanx/spanx/span> </form> </body> </HTML>

Claims

WHAT IS CLAIMED IS
1 An object model configured to receive user selections and convert the user selections into a report definition output file representing an XML expression of a report that may be processed by an XML engine to generate a report
2 An object model as claimed in claim 1 , wherein the report definition output file is an RDL output file
3 A query model comprising an object model configured to receive user selections and convert the user selections into a report definition output file representing an XML expression of a report that may be processed by an XML engine to generate a report, and an object model wrapper that provides an interface to the object model for the user selections
4 A query model as claimed in claim 3, wherein the report definition output file comprises an RDL output file
5 A query model as claimed in claim 3, further comprising a base code module coupled to the object module and the object model wrapper, wherein the base code module receives the user selections and provides the user selections to the object model wrapper and receives the report definition output file from the object module
6 A database query system comprising an internet information server, wherein the internet information server receives user selections from and provides information to clients, a query module interfaced with the internet information server, wherein the query module includes an object model configured to receive the user selections and convert the user selections into a report definition output file representing an XML expression of a report that may be processed by an XML engine to generate a report, an XML engine interfaced with the query module, wherein the XML engine receives a report definition output file from the query module that is processed by the XML engine to generate the report.
7. A database query system as claimed in claim 6, wherein the report definition output file comprises an RDL output file.
8. A database query system as claimed in claim 6, wherein the query module further comprises an object model wrapper that provides an interface to the object model for the user selections.
9. A database query system as claimed in claim 8, further comprising a base code module coupled to the object module and the object model wrapper, wherein the base code module receives the user selections and provides the user selections to the object model wrapper and receives the report definition output file from the object module.
10. A database query system as claimed in claim 6, further comprising a web programming tool set module interfaced with the query module, wherein the query module utilizes the web programming tool set module to generate user interface screens that are supplied to the clients via the internet information server.
11. A database query system as claimed in claim 6, wherein at least one of the query module and the XML engine are coupled to a database.
12. A database query system as claimed in claim 6, further comprising a network coupled to the internet information server to interface the internet information server to the clients.
13. A method of providing a database query comprising: receiving user selections that specify query criteria for a desired query; building a query instruction set based on the user selections; utilizing an object model to generate a report definition output file based on the Query instruction set; supplying the report definition output file to an XML engine, wherein the report definition output file represent an XML expression of a report; processing the report definition output file with the XML engine to produce query results in the form of a report.
14. A method of providing a database query as claimed in claim 13, wherein the processing of the report definition output file with the XML engine comprises retrieving information from a database matching the query criteria specified by the user selections and reflected in the report definition output file.
15. A method of providing a database query as claimed in claim 13, further comprising testing the query criteria by utilizing the Query instruction set to directly interrogate a database to determine the number of records that meet the query criteria, and providing to a user an indication of the number of records that would result from the running of the desired query.
16. A method of providing a database query as claimed in claim 13, wherein supplying the report definition output file to the XML engine includes placing a web- service call to the XML engine.
17. A method of providing a database query as claimed in claim 13, wherein the report definition output file comprises an RDL output file.
18. A machine readable medium encoded with machine instructions, wherein said machine instructions comprise an object model configured to receive user selections and convert the user selections into a report definition output file representing an XML expression of a report that may be processed by an XML engine to generate a report.
19. A machine readable medium as claimed in claim 18, wherein the report definition output file is an RDL output file.
PCT/US2005/001243 2004-01-16 2005-01-14 Method and apparatus to perform client-independent database queries WO2005072140A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53697204P 2004-01-16 2004-01-16
US60/536,972 2004-01-16

Publications (2)

Publication Number Publication Date
WO2005072140A2 true WO2005072140A2 (en) 2005-08-11
WO2005072140A3 WO2005072140A3 (en) 2009-03-26

Family

ID=34825902

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2005/001243 WO2005072140A2 (en) 2004-01-16 2005-01-14 Method and apparatus to perform client-independent database queries

Country Status (1)

Country Link
WO (1) WO2005072140A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070143161A1 (en) * 2005-12-21 2007-06-21 Microsoft Corporation Application independent rendering of scorecard metrics
US7814114B2 (en) * 2006-09-05 2010-10-12 Oracle International Corporation Tree-based information query model
CN108228314A (en) * 2017-12-05 2018-06-29 华东师范大学 A kind of Virtual prototype error-detecting method based on equipment stipulations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073115A1 (en) * 2000-02-17 2002-06-13 Davis Russell T. RDL search engine
US20030101169A1 (en) * 2001-06-21 2003-05-29 Sybase, Inc. Relational database system providing XML query support
US6851089B1 (en) * 1999-10-25 2005-02-01 Amazon.Com, Inc. Software application and associated methods for generating a software layer for structuring semistructured information

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851089B1 (en) * 1999-10-25 2005-02-01 Amazon.Com, Inc. Software application and associated methods for generating a software layer for structuring semistructured information
US20020073115A1 (en) * 2000-02-17 2002-06-13 Davis Russell T. RDL search engine
US20030101169A1 (en) * 2001-06-21 2003-05-29 Sybase, Inc. Relational database system providing XML query support

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070143161A1 (en) * 2005-12-21 2007-06-21 Microsoft Corporation Application independent rendering of scorecard metrics
US7814114B2 (en) * 2006-09-05 2010-10-12 Oracle International Corporation Tree-based information query model
CN108228314A (en) * 2017-12-05 2018-06-29 华东师范大学 A kind of Virtual prototype error-detecting method based on equipment stipulations
CN108228314B (en) * 2017-12-05 2021-08-20 华东师范大学 Virtual prototype error detection method based on equipment protocol

Also Published As

Publication number Publication date
WO2005072140A3 (en) 2009-03-26

Similar Documents

Publication Publication Date Title
US7003730B2 (en) Graphical user interface to build event-based dynamic searches or queries using event profiles
US6928431B2 (en) Dynamic end user specific customization of an application&#39;s physical data layer through a data repository abstraction layer
US7165073B2 (en) Dynamic, hierarchical data exchange system
US6901403B1 (en) XML presentation of general-purpose data sources
US8578266B2 (en) Method and system for providing a framework for processing markup language documents
US6889359B1 (en) Method for providing a visual representation of dynamic HTML table attributes
US6851088B1 (en) Conditional highlighting of given cells in a dynamic HTML table
US6718515B1 (en) Method of populating a dynamic HTML table from a set of data objects through a common interface
US8095497B2 (en) Process for data driven application integration for B2B
US7734639B2 (en) Global query correlation attributes
US7076521B2 (en) Web-based collaborative data collection system
EP1683009B1 (en) Systems and methods for configuring software
US20030221162A1 (en) Meta-templates in website development and methods therefor
US6779152B1 (en) Method for rotating a dynamic HTML table
US20060206468A1 (en) Rule application management in an abstract database
KR20060112187A (en) System and method for storing and retrieving xml data encapsulated as an object in a database store
Baumgartner et al. Web data extraction for business intelligence: the lixto approach
US6996574B2 (en) System and method for accessing database design information
US20070094289A1 (en) Dynamic, hierarchical data exchange system
WO2005072140A2 (en) Method and apparatus to perform client-independent database queries
Deshpande et al. Metadata-driven ad hoc query of patient data: meeting the needs of clinical studies
AU782134B2 (en) Apparatus, systems and methods for electronic data development, management, control and integration in a global communications network environment
Di Ruscio et al. A data-modelling approach to web application synthesis
Chen et al. A practical approach to extracting DTD-conforming XML documents from heterogeneous data sources
Moshfeghi et al. XML in a multi-tier Java/CORBA architecture

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase