專利名稱:包括表、矩陣和混合設計的靈活報告設計的系統(tǒng)和方法
技術領域:
本發(fā)明涉及生成報告,尤其涉及用于創(chuàng)建可在計算機化的過程中由數(shù)據(jù)填充的報告設計的技術,其中該技術不但考慮了報告設計中的靈活性,也考慮了生成和理解設計的簡明性。
背景技術:
在任何企業(yè)中,關于其諸方面的數(shù)據(jù)隨時被累積。該數(shù)據(jù)可用于報告企業(yè)的狀態(tài)。例如,就銷售企業(yè)來說,可關于項目的每次銷售累積銷售數(shù)據(jù),包括銷售員、消費者、銷售員的區(qū)域、消費者的區(qū)域、銷售量、售出的項目的量、銷售日期、售出的項目的遞送日期等等。根據(jù)這些銷售數(shù)據(jù),隨后可能的是生成按年、按月、按消費者按年、按項目按季度、按銷售員按遞送日期、按區(qū)域按星期等等詳細描述銷售的報告。
填充報告的數(shù)據(jù)一般將累積在數(shù)據(jù)庫中。如這里所使用的術語數(shù)據(jù)庫是用于數(shù)字化的記錄數(shù)據(jù)的倉庫。為了將數(shù)據(jù)庫中的數(shù)據(jù)過濾成用于報告的適當組織的列和行,報告設計者可在報告設計中定義希望得自于數(shù)據(jù)庫的特定數(shù)據(jù)。例如,報告設計者可規(guī)定他希望在報告的第一列中為“銷售者姓名”。
報告設計者隨后可編寫程序,該程序識別對報告設計的第一列(銷售者姓名)指示出的字段、查詢數(shù)據(jù)庫中所有的銷售者姓名、以及將他們一個個地放置在報告的第一列中。作為編寫其自己的程序來執(zhí)行該任務的替代,報告設計者可使用提供該功能的商業(yè)軟件。這些軟件可允許報告設計者在報告設計中簡單地規(guī)定他希望存在于第一報告列中的數(shù)據(jù)類型。商業(yè)軟件隨后將自動地分析報告設計、查詢數(shù)據(jù)庫、以及將所希望的數(shù)據(jù)放置在報告的第一列中。在用于任何數(shù)量的列或行的報告的商業(yè)產(chǎn)品中,該操作也是可行的。
圖2例示出一個示例性的報告設計。該示例性的報告設計提供了銷售者列201、1990銷售列202、以及總銷售列205。該報告設計可提交給能夠從數(shù)據(jù)庫中抽取對應的數(shù)據(jù)以填充實際的報告的支持軟件。圖3給出了這樣一種實際報告可能表現(xiàn)出的樣子。圖3示出了經(jīng)填充的銷售者列301、經(jīng)填充的1990銷售數(shù)據(jù)列302、以及經(jīng)填充的總銷售列305。
圖5中描述了用于用適當?shù)臄?shù)據(jù)填充報告設計的示例性報告處理軟件。報告處理軟件510可包括用于適當?shù)亟忉尨鎯τ诙鄠€數(shù)據(jù)源520和521中的任何一個的數(shù)據(jù)的多個數(shù)據(jù)擴展(data extension),其中數(shù)據(jù)源可以是例如數(shù)據(jù)庫。報告處理軟件還可包括若干翻譯擴展(rendering extension),以便以適當?shù)奈募袷秸_地輸出報告,文件格式例如超文本標記語言(HTML)530、可擴展標記語言(XML)531、或者某些其它文件格式532。報告設計500在這里也被稱作為報告定義,它由報告處理軟件使用來從數(shù)據(jù)源520、521收集數(shù)據(jù),將數(shù)據(jù)編譯成適當結構化的報告,以任一文件格式530、531、532來輸出報告。該處理在通過被引用而完全結合于此的美國專利申請10/400,734中有更為詳細的描述。
不同的報告是設計用于不同的數(shù)據(jù)類型和數(shù)據(jù)量。雖然某些報告是相當簡單地,但是其它報告給出多種類型的數(shù)據(jù),并可表示出數(shù)據(jù)之間的復雜關系。對于公共數(shù)據(jù)關系的一個例子,參考圖1,第一列中的單獨的一個字段(例如Acme 101a)可與第二列中的若干字段(例如102a、102b和102c)相關聯(lián)。為此,報告處理軟件必須能夠定位報告的各種字段中的數(shù)據(jù)。Bob的折扣店(Bob’sDiscount)101b不能出現(xiàn)在緊接著Acme 101a之下的一個單元中;相反,Bob的折扣店101b必須設置于視覺上對應于Bob的折扣店數(shù)據(jù),例如102d、102e、102f。從而,報告處理軟件必須以比簡單地將數(shù)據(jù)集中于列和行中更為智能的方式來填充報告。該例子是報告設計中的潛在復雜性的一個小的嘗試,本領域的技術人員將理解到其全部范圍。這里應該強調(diào)的是,雖然實際報告的外觀看上去是簡單的,但是利用商業(yè)軟件支持報告設計的技術卻是不簡單的,因為所希望的設計具有多樣性,以及需要精確地填充以各種不同方式設計的報告。
雖然報告設計者可總能夠創(chuàng)建定制的計算機程序來適當?shù)靥畛淠骋惶囟ǖ膱蟾?,但是許多報告設計者并不具備編寫這種定制程序的專門技術或希望。此外,編寫這些計算機程序?qū)τ趫蟾嬖O計者來說可能是浪費時間。因此,常常呼吁報告設計者湊合著使用商業(yè)軟件產(chǎn)品提供的可利用的計算機程序,或者花費可觀的時間來創(chuàng)建用于定制報告設計的計算機程序。因此,對于商業(yè)報告設計軟件來說,報告設計中的靈活性是所希望的屬性。如同所有軟件一樣,簡單性也是所希望的屬性,因為用戶能夠更為容易地訪問可容易理解的特征。
由于上述情況,呼吁商業(yè)軟件公司提供實際上可適應的各種報告設計的報告設計軟件。這可能是困難的任務。如果做得好,該任務包含一種用于規(guī)定報告設計的容易理解的技術,它既是靈活的又是高度精確的,允許設計者傳送用于報告的數(shù)據(jù)的內(nèi)容和布局。傳統(tǒng)上,通過為報告設計提供兩種主要的選項表和矩陣,已經(jīng)解決了該任務。
下面連同附圖1和4的簡單討論將指出傳統(tǒng)的表報告設計和矩陣報告設計的優(yōu)點和局限。首先,圖1示出可使用表設計生成的報告的某些典型特征。如圖1所提示的那樣,表設計允許報告設計者僅使用固定的列。這些被稱為是靜態(tài)列104。換言之,報告設計者使用表設計能夠按需規(guī)定用于消費者101、年份102、銷售103等等的列,以包含用于報告的所有希望的數(shù)據(jù)。
相反,表的行可以是動態(tài)的。例如,參考動態(tài)行105。這些行105可以按需擴展以足夠呈現(xiàn)出更多或更少量的報告數(shù)據(jù)。例如,參考動態(tài)行105隨著時間的進行,可擴展報告的年102a和102b,以便百報告年2003和2004??商砑宇~外的行來為報告中的這些行提供所有對應的數(shù)據(jù)。這允許報告設計者年年重復使用單個報告設計,或者使用相同的報告設計來呈現(xiàn)出變化的范圍的數(shù)據(jù)。
表報告設計還可包括頁眉行和頁腳行。在圖1中,規(guī)定例如消費者101、年102和銷售103的列名稱的頂部行是頁眉行。規(guī)定銷售的總計101c的底部行是頁腳行。頁眉行和頁腳行中的每一個都包含與非頁眉/頁腳行的數(shù)據(jù)類型不同類型的數(shù)據(jù)的單元,并且通常在這些行中匯總數(shù)據(jù)。
表報告設計還可包含嵌套組,每組具有頁眉行和頁腳行。圖1通過為消費者101a和101b給出嵌套的頁眉和頁腳行來例示出該特征。僅具有Acme101a的行和僅具有Bob的折扣店101b的行都是頁眉行。包含小計102c和102f的行是頁腳行。同樣,這些嵌套的頁眉和頁腳行101a、101b、102c和102f中的每一個都包含與非頁眉/頁腳行不同的信息。
最后,表報告設計能夠規(guī)定最內(nèi)部的組內(nèi)的細節(jié)行。表設計的該方面沒有在圖1的實際表中表現(xiàn)出。這種細節(jié)行的一個例子是例如如果對于Acme的2001年銷售103a來說希望額外的數(shù)據(jù),可以在報告設計中規(guī)定一細節(jié)行,它將額外信息插入于指示出Acme的2001年銷售103a的一行下面的一行中。
總而言之,根據(jù)本領域的當前狀態(tài),使用表設計的報告設計者能夠規(guī)定固定的或靜態(tài)的列,以及靜態(tài)的或動態(tài)的行。任何數(shù)量的頁眉和頁腳行也都是可行的。處理報告設計的軟件隨后將把所有規(guī)定的數(shù)據(jù)置于適當?shù)牧泻托兄小τ趧討B(tài)行,可按需要生成行,以容納數(shù)據(jù)。
連同商業(yè)上可用的報告生成軟件,報告設計者可用的其它設計選項是矩陣。圖4給出了暴露出這樣一種設計的特征的示例性矩陣。如可從圖4的實際報告推測出的那樣,用于矩陣的報告設計允許動態(tài)列450。包含用于2001(401)和2002(402)的每年的銷售數(shù)據(jù)的列可按需得到補充用于其它年份。例如,如果數(shù)據(jù)可用于2003和2004,則這些數(shù)據(jù)可被自動地添加到報告中,而不需要在報告設計中為這些年份規(guī)定額外的列。矩陣中的每個列組可包含頁眉430和頁腳430。然而,注意到,矩陣的動態(tài)列雖然比表設計具有優(yōu)點,但是它并不具有報告設計中所希望的更多的靈活性。例如,使用當前的商業(yè)報告設計軟件,動態(tài)列450不能包含嵌套的動態(tài)列。雖然能夠根據(jù)每種不同的情況編寫定制程序來實現(xiàn)這個目的,但是生成這種定制程序?qū)τ趫蟾嬖O計者來說是難以克服的障礙。
矩陣報告設計還允許靜態(tài)和動態(tài)行,例如470和460。在圖4中,提供頁眉440用于例如2001(401)、2002(402)和小計(403)的列名稱。對應于零售和批發(fā)部分的行組并未被提供行頁眉和頁腳,但是這是可以提供的。提供頁腳行470用于總數(shù)422數(shù)據(jù)。元素404和423是動態(tài)行組460的實例。就這一點而言,在報告設計中,可把矩陣中的一個或多個行規(guī)定為動態(tài)行。當與數(shù)據(jù)相結合時,這種動態(tài)行可擴展以容納可用的數(shù)據(jù)。在圖4的例子中,可用的數(shù)據(jù)顯然包含零售404和批發(fā)413數(shù)據(jù)。然而,注意到動態(tài)行460僅包含靜態(tài)嵌套行461。本領域的當前狀態(tài)不允許靜態(tài)和動態(tài)行的任何數(shù)量的進一步組合,而這可能是報告設計中所希望的。
總而言之,矩陣考慮到用若干固定行或可由行頁眉和頁腳進一步描繪的簡單的動態(tài)行來表現(xiàn)報告數(shù)據(jù)。靜態(tài)和動態(tài)列可按需用于顯示數(shù)據(jù)。動態(tài)列/行還可進一步由頁眉和頁腳列來描繪,以便在報告中提供其它相關信息。
因此,表和矩陣報告設計都提供了某些有用的特征,但是它們受限于允許報告設計者規(guī)定報告的特征的方式。用于報告設計的更為靈活的同時又便于理解的格式將通過允許可通過標準化的商業(yè)軟件容易地實現(xiàn)的更寬范圍的設計來改進報告,所述標準化的商業(yè)軟件不要求定制的附加物來適當?shù)爻尸F(xiàn)報告的數(shù)據(jù)。
根據(jù)支持報告設計的領域的當前狀態(tài),至今還沒有認識到在對希望用于數(shù)據(jù)的表示的各種報告設計的支持中提供額外的靈活性和簡便性的需要。
發(fā)明內(nèi)容
提供了用于設計報告的系統(tǒng)和方法。可把報告的或報告的某一區(qū)域的列和/或行聲明性地定義為動態(tài)或靜態(tài)??捎萌魏螛擞泚泶砺暶餍远x。例如,可把方括號、文本字體、文本顏色、某些其它標記、或者它們的不存在指定為聲明。如果聲明性地將列指定為動態(tài),則它可被擴展成多個列或行。這種擴展可按需用于容納用于報告設計的數(shù)據(jù)。如果把列或行指定為靜態(tài),則它保持為單個列或行,以僅僅表示規(guī)定的列或行數(shù)據(jù)。
此外,根據(jù)報告設計者的需要,還可聲明性地把列和行的子組定義為動態(tài)或靜態(tài)。靜態(tài)列可能不包含子列,或它可包含多個靜態(tài)列、多個動態(tài)列或兩者的任意組合。類似地,動態(tài)列也可包含任意數(shù)量的靜態(tài)列、任意數(shù)量的動態(tài)列、或兩者的任意組合,這指示出在擴展時,每個動態(tài)列將包含指定的子列。這同樣適用于行。
圖1例示出可使用表報告設計生成的報告。用于這種報告的表報告設計以靜態(tài)列、動態(tài)行、以及任意數(shù)量的行頁眉和頁腳為特征。
圖2例示出示例性報告設計。該設計指示出具有三列的報告。當報告處理軟件處理時,生成填充有數(shù)據(jù)的實際報告。這種實際報告的例子在圖3中給出。
圖3例示出由假象的報告處理軟件使用圖2的示例性報告設計生成的實際報告。該報告處理軟件已經(jīng)收集了對應于圖2中指定的列的數(shù)據(jù),并將數(shù)據(jù)放置在列中。
圖4例示出使用矩陣報告設計生成的報告。用于這種報告的報告設計以具有列頁眉和列頁腳的動態(tài)列、以及可能的具有行頁眉和行頁腳的動態(tài)行為特征。注意,僅靜態(tài)行461嵌套于動態(tài)行460中。
圖5例示出用于將報告設計與數(shù)據(jù)結合以生成實際報告的過程。報告處理軟件確定報告設計所要求的數(shù)據(jù),從數(shù)據(jù)源收集合適的數(shù)據(jù),填充實際報告,并輸出實際報告。可使用數(shù)據(jù)擴展來理解來自數(shù)據(jù)源的數(shù)據(jù),同時,可使用翻譯擴展來以請求的文件格式生成實際報告。
圖6例示出實施本發(fā)明的設計技術的一般化的報告設計。
圖7例示出使用本發(fā)明的各種技術提供關于每年的和區(qū)域性的銷售的報告的示例性報告設計。
圖8例示出可使用圖7的設計生成的實際報告。
圖9例示出適用于連同本發(fā)明的各方面一起使用的示例性計算環(huán)境的最基本的屬性。
圖10例示出使用提供的各種設計技術中的某些技術生成的報告。圖10是可從諸如圖11之類的報告設計生成的報告的例子。
圖11例示出將某些列、行、子列和子行聲明為動態(tài)或靜態(tài)的示例性報告設計。可從這種設計生成的示例性報告示于圖10。
圖12例示出圖11的報告設計中的各種項目的內(nèi)容類型。報告設計中的列、子列和子行可被聲明為動態(tài)或靜態(tài),以產(chǎn)生諸如圖10之類的報告。
具體實施例方式
在下面的說明和附圖中提出了某些特定細節(jié),以給出對本發(fā)明的各種實施例的全面理解。然而,在下面的揭示中,并未給出通常與計算和軟件技術相關聯(lián)的某些已知的細節(jié),以便避免對本發(fā)明的各種實施例造成累贅。此外,相關技術領域的技術人員將理解到他們能夠在不用下面描述的一個或多個細節(jié)的情況下就能夠?qū)嵺`出本發(fā)明的其它實施例。最后,雖然參考下面揭示中的步驟和順序描述了各種方法,但是這種說明僅僅是用于提供本發(fā)明的實施例的清楚的實現(xiàn)方式,不應把各步驟和步驟順序看作實踐本發(fā)明的要求。
報告是數(shù)據(jù)的匯編,用于在可視表面上以列和行來顯示。報告中的數(shù)據(jù)可以是任何數(shù)據(jù)。典型的報告可包括用于企業(yè)的金融數(shù)據(jù),例如各種產(chǎn)品的銷售的收入總和、與各種產(chǎn)品相關的支出、與各種產(chǎn)品相關的利潤等等。其它報告可包括消費者信息,例如姓名、包括電話號碼、地址和電子郵件地址的聯(lián)系信息、以及產(chǎn)品偏好、一年的總購買數(shù)、專門折扣店等等。報告還可用于通過匯編雇員姓名、工作的小時數(shù)、完成量、計劃的休假期、特殊需求等等,來跟蹤雇員。這些例子僅僅是可包含于報告之中的可能數(shù)據(jù)的非常小的一個子集。人們可能希望關于任何努力匯編的任何數(shù)據(jù)都可置于報告之中。實際報告的進一步的例子在圖1、圖3、圖4和圖8中給出。附圖中的報告顯示出數(shù)據(jù)比典型的報告的稍微少一點,這是為了簡化說明。更為典型的報告可包括數(shù)十個、數(shù)百個或數(shù)千個行和列,以供顯示報告的所有數(shù)據(jù)的需要。
報告可被劃分成區(qū)域,可根據(jù)不同的報告設計來設計報告的不同區(qū)域。此外,單個報告設計可規(guī)定報告中的遵循不同設計的各種區(qū)域。報告的該特征在美國專利申請10/400,734中有更為詳細的闡述。出于本文檔的目的,術語報告應被解釋成表示整個和完整的報告,或者滿足設計選擇的同類組的報告的區(qū)域。
報告設計是報告的模版,用于顯示出什么數(shù)據(jù)將被顯示在實際報告中,以及數(shù)據(jù)的布局。報告設計可包括采用諸如XML或HTML之類的適當?shù)挠嬎銠C可讀語法的計算機可讀指令集。報告設計的該實施例的例子在下面的說明中給出。這種設計還可圖形化地具體體現(xiàn)在例如圖10中,圖10是這里所給出的計算機可讀指令集的圖形化實施例。在圖形化表示的報告設計的情況下,報告設計軟件一般用作為提供報告設計參數(shù)和生成報告定義文件的輔助工具。
報告設計軟件一般使用GUI用于圖形化地表示報告設計。例如,報告設計軟件可在計算機屏幕GUI向設計者呈現(xiàn)若干空的列和行。設計者可使用鼠標或其它控制設備來選擇各種列和行中的任何一個。設計者隨后可通過從多個菜單選項中進行選擇輸入報告所希望的數(shù)據(jù),或者可借助于通過利用鍵盤輸入直接鍵入識別信息來識別數(shù)據(jù)來輸入數(shù)據(jù)。報告設計者使用各種輸入設備輸入的信息可隨后存儲于報告定義文件中。該文件提供了報告設計者所創(chuàng)建的報告定義的緊湊表示,并可采用任意文件格式,例如XML、HTML、.txt、.doc等等。
簡單的報告設計可指示出表的多個列,例如圖2。不管是直接生成的還是利用報告設計軟件的幫助,報告設計都可由報告處理軟件通過用適當?shù)臄?shù)據(jù)填充報告數(shù)據(jù)中所指示出的適當?shù)牧泻托衼砩蓪嶋H報告。報告處理軟件包括用于匯編報告的任何軟件。適用于本發(fā)明的其它方面的報告處理軟件的某些一般概念示于圖5。這種軟件510執(zhí)行查詢數(shù)據(jù)源520、521的功能,以檢索報告設計或報告定義500中所規(guī)定的數(shù)據(jù)。可使用一個或多個數(shù)據(jù)擴展511來適當?shù)亟忉寔碜詳?shù)據(jù)源520、521的數(shù)據(jù)。軟件510隨后將檢索出的數(shù)據(jù)匯編成報告定義500所規(guī)定的布局。使用一個或多個翻譯擴展可把輸出報告翻譯成任何文件格式,例如530、531、532。本領域的技術人員將認識到諸如支持面向?qū)ο缶幊痰恼Z言中創(chuàng)建的對象之類的單獨的軟件組件可用于執(zhí)行報告處理軟件510的各種功能。
圖6中例示出的實施例意圖給出本發(fā)明的許多方面,以清楚地進行闡述。例示出的報告設計并不是使用這里所揭示出的技術作出的唯一報告設計。相反,本發(fā)明的技術支持靈活的報告設計,適用于報告設計者可能希望的無限種類的報告。圖6的示例性設計是有用的,因為它說明了報告設計的許多潛在的特征。然而,實際上,圖6的設計可能有點不實用??墒褂脠D6的某些特征而不實用其它特征來生成一個簡單的可理解的報告。因此,圖6更多地是作為本發(fā)明的諸方面的說明,而不是使用本發(fā)明的一個具體的實踐例子。針對于現(xiàn)實報告的更多的實際實施例,使用本發(fā)明的技術的其它報告設計示于圖7和圖11。圖11的代碼版本在本說明書中給出。
如圖6所示,使用本發(fā)明的諸方面所提供的技術,可把列和行聲明性地定義為動態(tài)或靜態(tài)。在圖6中,方括號[]用于聲明性地把列或行定義為動態(tài),而沒有方括號則是用于聲明性地把列或行定義為靜態(tài)。聲明的目的至少是兩個方面首先,它允許報告設計者容易地看到哪些列和行是動態(tài)的,哪些是靜態(tài)的。其次,它可由報告處理軟件用來識別哪些列和行是靜態(tài)的,哪些是動態(tài)的,以用于用數(shù)據(jù)填充報告。
本發(fā)明的各種實施例中,可在可擴展標記語言(XML)模式(schema)或XML文檔類型定義(XML Document Type Definition)中將用于把列或行識別為動態(tài)或靜態(tài)的一個或多個聲明標準化。這允許報告設計者使用標準化的聲明,并確保他們的設計將由被指示用于識別這些聲明的報告設計軟件適當?shù)靥幚?。例如,如果把方括號[]定義為XML模式中的一個識別動態(tài)行或列的屬性,則報告設計者可把方括號[]置于那些他們希望成為動態(tài)的行或列中,并且報告處理軟件將如此地解釋那些動態(tài)行和列。沒有方括號[]的行和列將不被識別為動態(tài),并因此按默認方式被識別為靜態(tài)行和列。
聲明可以是任何標記。如發(fā)明內(nèi)容部分所簡單討論的那樣,這種標記可以是方括號、文本字體、文本顏色、某些其它標記、或沒有這些標記。此外,文本點大小、存在諸如星號*或字母(D)之類的特定符號、或?qū)χT如“動態(tài)”或“靜態(tài)”之類的識別單詞的使用,都可用于將行或列聲明為動態(tài)或靜態(tài)。本發(fā)明不限于用于聲明性地把列或行定義為動態(tài)或靜態(tài)的特定標記。相反,本發(fā)明包括對任何聲明的,來在報告設計中把列或行定義為動態(tài)或靜態(tài)。
報告的列是相關報告數(shù)據(jù)所位于其中的垂直帶。列可由列的頂行中的列標題來標識。列可劃分成列的子組,列的子組還可被進一步向下劃分成子組。因此,用于“汽車”的第一列可被劃分成FORD_(福特)和TOYOTA_(豐田)子組。這些列中的每一列可進一步被劃分成型號子組,例如FORD_列中的FOCUS_、TAURUS_和BRONCO_,以及TOYOTA_列中的CAMRY_、COROLLA_和TERCEL_。這些型號列中的每一個可進一步被劃分成顏色列,如紅色、藍色和綠色。列的進一步劃分可按需繼續(xù)進行到任何級別的子組劃分。這一概念在圖6中表現(xiàn)出,例如,列600被劃分成列603、604、605、606和607。列607被進一步劃分成列613和614。這些列的每一個,不論是上層列還是在某一級別的子組劃分中存在的列,在這里都被成為是列。在需要的情況下,術語子組列、嵌套列等等將被用于指示出列的適當特征。
類似地,報告的行是相關報告數(shù)據(jù)所位于其中的水平帶。行可劃分成行的子組,行的子組可進一步向下劃分成任何級別的子組。因此,用于“汽車”的第一行可被劃分成FORD_(福特)和TOYOTA_(豐田)子組。這些行中的每一行可進一步被劃分成型號子組,例如FORD_行中的FOCUS_、TAURUS_和BRONCO_,以及TOYOTA_行中的CAMRY_、COROLLA_和TERCEL_。這些型號行中的每一個可進一步被劃分成顏色行,如紅色、藍色和綠色。行的進一步劃分可按需繼續(xù)進行到任何級別的子組劃分。這一概念在圖6中表現(xiàn)出,例如,行650被劃分成行652、653、654和655。行653被進一步劃分成行658和659。這些行的每一個,不論是上層行還是在某一級別的子組劃分中存在的行,在這里都被成為是行。在需要的情況下,術語子組行、嵌套行等等將被用于指示出行的適當特征。
在生成實際報告時,報告處理軟件將不把諸如圖6所示之類的在報告設計中聲明為靜態(tài)的列或行擴展成多個列或行。重新參考上述聲明性定義的討論,可通過任何標記或沒有標記來將列或行定義為靜態(tài)。考慮圖6的列602,該列已通過沒有方括號[]被聲明為靜態(tài)列。該特征暗示出當從圖6的設計生成實際報告時,將僅有一個靜態(tài)列602。
例如,假設指定列602列出雇員的主要的電子郵件地址。每個雇員僅具有一個主要的電子郵件地址。數(shù)據(jù)庫中還可以存在其它的電子郵件信息,例如第二或第三電子郵件地址,但是這些地址并非報告所需。為了實現(xiàn)這個目的,可標識靜態(tài)列,例如列602,可把列的內(nèi)容標識為“主要的電子郵件地址”。從這種設計生成實際報告的報告處理軟件將從數(shù)據(jù)庫中檢索主要的電子郵件地址,并將它們置于列中。它將不試圖檢索其它電子郵件地址或生成實際報告的其它列來容納其它的電子郵件地址。
關于靜態(tài)列602所討論的原理同樣適用于靜態(tài)行。靜態(tài)行不會由報告處理軟件擴展成多個行。考慮靜態(tài)行657??砂言撔袠俗R為包含諸如“主要的產(chǎn)品ID”之類的信息。數(shù)據(jù)庫中可能存儲了用于各種產(chǎn)品的多個產(chǎn)品ID,但是這些ID并非實際報告所需。該行是靜態(tài)行,從而將不會生成多個行以傳達各種產(chǎn)品ID。
相反,報告設計中聲明為動態(tài)的列或行,例如609,可按需被復制以容納用于規(guī)定的列或行的所有可用數(shù)據(jù)??紤]列615,該列被聲明性地定義為動態(tài)列。報告設計者可能已確定數(shù)據(jù)將加入可能跨越多個列的報告中。然而,所需的列數(shù)是未知的,或可變的,或可能僅僅是太大以至于輸入報告設計中的所有這些列將是繁重的工作。在這些情況下,報告設計者可規(guī)定動態(tài)列615。該列可由報告處理軟件自動地將其擴展成多個列。這種擴展可按需進行,以便容納對動態(tài)列規(guī)定的所有數(shù)據(jù)。
例如,如果指定列615用于每年的銷售數(shù)據(jù),可能存在已知這種數(shù)據(jù)的眾多年份,并且,隨著一年又一年,將有額外的數(shù)據(jù)添加到數(shù)據(jù)庫中。報告設計者可以規(guī)定有名的動態(tài)列,例如[每年銷售],而不是規(guī)定所希望的數(shù)據(jù)的每一年的靜態(tài)列。報告設計者可進一步規(guī)定某一范圍的所希望的數(shù)據(jù),例如1990至2001,或者規(guī)定符合描述的所有可用數(shù)據(jù)都是所希望的。報告處理軟件在從圖6的設計生成實際報告時,能夠在動態(tài)列615的位置上生成多個每年銷售。第一列可對應于1990銷售,第二列可對應于1991銷售,依此類推。就這一點而言,動態(tài)列可與組織在一起的數(shù)據(jù)一起使用,從而可對其作出查詢用于多個列的所希望的數(shù)據(jù)。
同樣,該原理可適用于動態(tài)行。動態(tài)行是報告設計中標識為可由報告處理軟件擴展成多個行的行。例如,可根據(jù)報告處理軟件檢索的數(shù)據(jù)按需將動態(tài)行660進行擴展。如果動態(tài)行660是用于表示指示出列中所標識的產(chǎn)品的生產(chǎn)團隊領隊的“每年團隊領隊”,則動態(tài)行600可按需被擴展成多行以容納1990團隊領隊、1991團隊領隊、1992團隊領隊等等。報告設計者不需要規(guī)定每一年,而是能夠規(guī)定某一范圍所希望的數(shù)據(jù),例如1990-1997,或者簡單地規(guī)定所有可用的數(shù)據(jù)。
本發(fā)明的諸方面允許報告設計者在報告設計中按某一報告的需要來聲明動態(tài)和靜態(tài)行和列。而且,可分別在另一行或列中聲明嵌套的動態(tài)和靜態(tài)行或列的任意組合。例如,動態(tài)列可包含動態(tài)和靜態(tài)嵌套列。
在動態(tài)列中嵌套動態(tài)和靜態(tài)列的這種能力例示于圖6。動態(tài)列604嵌套于動態(tài)列600中。在生成實際報告時,動態(tài)列600可按需擴展成任何數(shù)量的列,以報告數(shù)據(jù)。動態(tài)列600的這種擴展將生成動態(tài)列604的多個實例。動態(tài)列604的每個實例可隨后被擴展來容納用于動態(tài)列604的該實例的適當?shù)臄?shù)據(jù)。
諸如606之類的靜態(tài)列也可嵌套于諸如600之類的動態(tài)列中。在生成用于這種報告設計的報告中,單個靜態(tài)列606可置于動態(tài)列600的每個經(jīng)擴展的實例中。當填充報告時,報告處理軟件能夠首先擴展動態(tài)列600,然后適當?shù)靥畛渲T如靜態(tài)列606之類的嵌套列。
從圖6的上述解釋和實踐中,應該清楚地認識到動態(tài)列可不包含嵌套列、包含一個或多個靜態(tài)列、一個或多個動態(tài)列、或靜態(tài)列和動態(tài)列的任何組合。對于靜態(tài)列來說同樣如此。靜態(tài)列可包含動態(tài)列。其例子是靜態(tài)列601,它包含動態(tài)列609。報告設計中的此類情況將生成包含可擴展的子組列的單個靜態(tài)列。類似的,靜態(tài)列可不包含嵌套列,例如靜態(tài)列602,但也可包含一個或多個動態(tài)列、一個或多個靜態(tài)列、或兩者的任意組合。
雖然出于簡單的目的,上述討論針對列,但是清楚的是,行也可包含動態(tài)和靜態(tài)的嵌套行的任意組合。諸如650之類的動態(tài)行可包含其它動態(tài)行,如653。在該情況下,動態(tài)行650可按需被擴展成多個行,以容納可用的數(shù)據(jù)。650的每個實例將包含動態(tài)行653的實例。該嵌套的動態(tài)行隨后也可被按需擴展,以容納為行653所請求的可用數(shù)據(jù)。
動態(tài)行還可包含嵌套的靜態(tài)行。就這一點而言,動態(tài)行650包含靜態(tài)行655。650的每個實例在擴展之后都將包含靜態(tài)行655的實例。653的每個實例又可隨后按需被數(shù)據(jù)填充。注意,在行和列的情況下,這種嵌套的類別不需要包含與嵌套的行或列的所有其它實例完全相同的數(shù)據(jù)。相反,可修改用于填充行或列的查詢,來適應于動態(tài)父類行或列的實例,以用用于該特定實例的適當數(shù)據(jù)來填充嵌套行或列。
靜態(tài)行還可包含動態(tài)行。這例示于圖6中,其中靜態(tài)行651包含嵌套的動態(tài)行656。在該情況下,正如同列一樣,單個靜態(tài)父行651包含可按需被擴展來容納規(guī)定的數(shù)據(jù)的動態(tài)行。
注意到,除了顯示靜態(tài)和動態(tài)行和列之外,圖6示出了行和列頁眉和頁腳。這種行和列頁眉和頁腳實際上是靜態(tài)行和列。圖6中,這是通過頁眉和頁腳行和列的描述符沒有方括號[]來指示出的。一般來說,使用本發(fā)明的技術聲明為動態(tài)或靜態(tài)的行和列將不會被簡單地命名為圖6所例示的“動態(tài)行”或“靜態(tài)行”。相反,可根據(jù)要置于其中的數(shù)據(jù)來命名這些行和列。就這一點而言,頁眉行652指示出它是描述其下面的數(shù)據(jù)的標題。頁腳行654類似地向報告設計的觀察者傳達了將加入654的數(shù)據(jù)是用于包含于上述行中的數(shù)據(jù)的頁腳數(shù)據(jù)。這同樣適用于頁眉列603和頁腳列605。這些是靜態(tài)列,可簡單地被命名來至少部分地描述將包含于這些列中的數(shù)據(jù)。該概念將進一步參考圖7和圖8來解釋。
圖6抽象化地提出了本發(fā)明的許多方面,這有助于闡述。圖7和圖8給出了報告設計的具體例子,以及它如何能被報告處理器使用來生成實際報告。圖7提出了示例性報告設計,圖8例示出該設計如何被填充數(shù)據(jù)。因此,這些圖進一步揭示和澄清了用于靈活的報告設計的系統(tǒng)和方法的優(yōu)點。
圖7的示例性報告設計示出三個靜態(tài)上層列年700、區(qū)域701以及小計702。報告設計針對示出年銷售、區(qū)域銷售和小計銷售的報告。標題為“年”700的靜態(tài)列進一步被劃分成兩個嵌套列用于每年銷售703的動態(tài)列和示出增長率704的靜態(tài)列。用于區(qū)域的靜態(tài)列也包含嵌套列用于區(qū)域705的單個動態(tài)列,其中“區(qū)域”表示區(qū)域銷售。用于小計的靜態(tài)列不包含嵌套列。
圖7中的報告設計的行是包含嵌套頁眉列707和動態(tài)的商店列708的動態(tài)類別列706。因此,在擴展時,706的每個實例將包括707和708的實例,如參考圖8所能看見的那樣。還有一個用于總計數(shù)據(jù)的靜態(tài)行709。
圖7中的細節(jié)單元元素710-717,能夠提供關于將填充這些單元的額外信息。雖然用于報告的信息可從行和列描述符中提供的信息中完整收集,但是細節(jié)單元中的信息給出了額外的設計選擇。從而,可能不要求將任何信息置于諸如710之類的細節(jié)單元中,因為從信息的上下文中可以清楚的知道該單元是用于某一年的某一商店的銷售信息。然而,總計行較不透明。例如,可能不清楚的是如果在細節(jié)單元中不提供信息,單元713可能希望平均增長圖。
圖8提供了可從圖7的報告設計中生成的實際報告。用于每年銷售703的動態(tài)列被擴展成兩個列,用于1990的列(803)用于1991的列(804)。用于區(qū)域705的動態(tài)列被擴展成兩個列,西部806和東部807。此外,類別動態(tài)行706被擴展成兩個類別零售808和批發(fā)811。注意,雖然靜態(tài)列700、701和702中的標題仍然存在于實際報告中,見800、801和802,但是用于類別行706的標題已經(jīng)在圖8的實際報告中被省去。這是呈現(xiàn)優(yōu)先選擇的問題,可通過額外的聲明性標記,例如斜體字,來完成。
圖8中,用于商店的動態(tài)行在動態(tài)擴展的類別行的每一個中被擴展成每類別兩個商店。這可假設為報告設計,如列708中指示出的約束的結果,該約束可能已指示出僅關心每個類別中的最上面的兩個商店。也可能僅僅是可用數(shù)據(jù)的結果一用于這四個商店的數(shù)據(jù)可能是僅可用的數(shù)據(jù)。在前一種情況下,在行說明中將聲明該限制,在后一情況中,不必進行聲明。
圖10、圖11和圖12以及下面給出的示例性XML報告定義給出了實現(xiàn)本發(fā)明的各種技術的報告設計的最終實例。圖10給出了可從圖11的報告設計中產(chǎn)生的示例性報告。圖11示意性地表示出可又如下所述的XML實現(xiàn)的報告設計。圖12揭示了圖11給出的示意性表示中的對象類型。
圖10、圖11和圖12的列和行的編號被配置成說明這些圖中相類似的元素。例如,圖12的動態(tài)列組1200對應于圖11中的[年]1200a列,以及對應于圖10中的2001(1200b)和2002(1200c)列。這種相關性允許在圖之間做出容易的引用和參考,以及顯示出報告設計中標識的列1200b如何能夠識別用于實際報告的數(shù)據(jù)(在這里是每年銷售數(shù)據(jù)),以及聲明性地定義(在這里是通過方括號)列是作為動態(tài)列。
圖11示出用于稱為“類型”的標題的靜態(tài)列1202a,它包含用于類型子組的動態(tài)列1203a。如可從圖10中看出,這些類型子組是“新鮮”1203b和“冷凍”1203c。該例子說明了使用本發(fā)明的技術的報告設計的功能優(yōu)點。
圖11還給出了若干靜態(tài)列1201a和1204a,如可通過參考圖12來進行核對的那樣,它把列1201和1204標識為靜態(tài)。注意,頁腳1201列僅僅是靜態(tài)列的一個例子。諸如1204之類的靜態(tài)列還可為將信息置于與周圍數(shù)據(jù)無關的報告之中的目的而提供。
圖11中給出的報告設計的行也結合了本發(fā)明某些技術,允許靈活的報告設計。如此,靜態(tài)行1250a可包含動態(tài)行組1253a。此外,動態(tài)行1251a可包含靜態(tài)行1252a和動態(tài)行1253a。這允許如圖10所例示那樣可重復列出頁眉行和子行。在圖10中的每個動態(tài)擴展的組中,來自報告設計的靜態(tài)行1252a重復一次。參考圖10中的1252b和1252c。動態(tài)行1253a按需被重復以容納圖10中的數(shù)據(jù)。參考圖10中的1253b、1253c、1253d和1253e。使用本發(fā)明的技術的這種單個報告設計的具體例子不使用靜態(tài)和動態(tài)行或列的所有可能組合,然而,對現(xiàn)有技術報告設計系統(tǒng)和方法所做出的貢獻和優(yōu)點應該是清楚的。
下面的XML定義說明了實施本發(fā)明的技術的報告的元素如何可以機器可讀語言來具體實施。示意性地做出的聲明歸納為XML文件中定義的元素和屬性。使用本發(fā)明的諸方面的報告設計者可使用允許示意性準備和以自動化的處理準備如下給出的例子那樣的定義文件的程序??蛇x地,可直接編寫報告定義文件而不用報告設計軟件的輔助來實踐本發(fā)明。在參考下面的例子的過程中,術語“tablix”用于聲明使用這里所描述的技術的報告設計的一個實例。
用干圖10、圖11和圖12的示例性XML定義<Tablix>
<RowGroupings>
<Grouping>
<Header>Retail</Header>
<SubGroupings>
<Grouping>
<GroupBy>=Category</GroupBy>
<SubGroupings>
<Grouping>
<StaticType>header</StaticType>
<Header>=Category</Header>
</Grouping>
<Grouping>
<GroupBy>=Region</GroupBy>
<Header>=Region</Header>
</Grouping>
</SubGroupings>
</Grouping>
<Grouping>
<Header>Net Deficit</Header>
</Grouping>
</SubGroupings>
</Grouping>
<Grouping>
<Header>Wholesale</Header>
</Grouping>
</RowGroupings>
<ColumnGroupings>
<Grouping>
<GroupBy>=Year</GroupBy>
<Header>=Year</Header>
</Grouping>
<Grouping>
<StaticType>footer</StaticType>
<Header>Total</Header>
</Grouping>
<Grouping>
<Header>Type</Header>
<SubGroupings>
<Grouping>
<GroupBy>=Type</GroupBy>
<Header>=Type</Header>
</Grouping>
</SubGroupings>
</Grouping>
<Grouping>
<Header>Yearly Growth</Header>
</Grouping>
</ColumnGroupings>
<Rows>
<Row>
<Cell/>
<Cell/>
<Cell/>
<Cell/>
</Row>
<Row>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Growth</Cell>
</Row>
<Row>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Avg(Growth)</Cell>
</Row>
<Row>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Sum(Sales)</Cell>
<Cell>=Avg(Growth)</Cell>
</Row></Rows></Tablix>
示例性的計算環(huán)境本發(fā)明的技術意圖與一個或多個計算機一起使用。特別是,實施這里所揭示的方法的報告設計產(chǎn)品可能提供圖形用戶界面(GUI)來幫助使用聲明性元素來規(guī)定如本說明書所教示的報告的品質(zhì)。這種圖形用戶界面和支持計算硬件和軟件是本領域所已知的,下面給出簡要的說明以更為具體地指出這種系統(tǒng)的特征,但不試圖描述已知計算技術的操作細節(jié)。
參考圖9,用于實施本發(fā)明的示例性系統(tǒng)包括諸如設備900之類的計算設備。在其最基本的配置中,設備900一般包括處理單元902和存儲器904。根據(jù)計算設備的確切配置和類型,存儲器904可以是易失性的(如RAM)、非易失性的(如ROM、閃存存儲器等)或兩者的某種組合。此外,設備900還可具有大容量存儲器(可移動的908和/或不可移動的910),例如磁盤或光盤或磁帶或光帶。類似地,設備900還可具有諸如鍵盤和鼠標之類的輸入設備914,和/或諸如給出如上所述的GUI作為促進報告設計的圖形輔助的顯示器之類的輸出設備916。設備900的其它方面可包括使用有線的或無線的媒介對其它設備、計算機、網(wǎng)絡、服務器等的網(wǎng)絡連接。所有這些設備都是本領域所已知的,不許在此累述。
應理解,這里所描述的各種技術可連同硬件或軟件或在適當?shù)那闆r下為兩者的組合來實施。從而,本發(fā)明的方法和裝置或其某些方面或部分可采用記錄于諸如軟盤、CD-ROM、硬盤或任何其它機器可讀存儲媒介中的程序代碼(即指令)的形式,在程序代碼被載入并執(zhí)行于諸如計算機之類的機器中時,機器變?yōu)閷嵺`本發(fā)明的裝置。在程序代碼執(zhí)行于可編程計算機上的情況下,計算設備一般包括處理器、處理器可讀的存儲媒介(包括非易失性和/或存儲元素)、至少一個輸入設備、以及至少一個輸出設備。例如可通過使用數(shù)據(jù)處理API、可重復使用的控件等之類的可實施或利用本發(fā)明的用戶界面技術的一個或多個程序較佳的以高級程序或面向?qū)ο蟮木幊陶Z言來實施,以于其它計算機系統(tǒng)通信。然而,可按需以匯編或機器語言來實施程序。在任何情況下,語言可以是編譯的或解釋的語言,并與硬件實現(xiàn)相結合。
本發(fā)明可在計算機可讀指令的一般上下文環(huán)境中來描述,計算機可讀指令例如可由一個或多個計算機或其它設備執(zhí)行的程序模塊。一般地,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結構等,它們執(zhí)行特定的任務或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。典型地,程序模塊的功能性可按照各種實施例中的需要進行組合或分布。
雖然示例性實施例涉及在一個或多個獨立的計算機系統(tǒng)的上下文環(huán)境中使用本發(fā)明,但是,本發(fā)明不限于這些,而是可連同各種計算環(huán)境一起來實施,例如網(wǎng)絡或分布式計算環(huán)境。進一步,本發(fā)明可跨越多個處理芯片或設備來實施,存儲器可類似地在多個設備之間有效。這些設備可包括個人計算機、網(wǎng)絡服務器、手持設備、超級計算機、或集成于諸如汽車和飛機之類的其它系統(tǒng)中的計算機。因此,本發(fā)明不應局限于任一單個實施例,而是應在根據(jù)其范圍進行解釋。
權利要求
1.一種用于設計報告的方法,其特征在于,包括在報告設計中聲明要被置于至少一個列中的數(shù)據(jù),其中,所述聲明包括聲明性的標記,以指示出所述至少一個列是否能夠按照需要擴展成多個列,以容納用于報告的數(shù)據(jù);在報告設計中聲明要被置于至少一個行中的數(shù)據(jù),其中,所述聲明包括聲明性的標記,以指示出所述至少一個行是否能夠按照需要擴展成多個行,以容納用于報告的數(shù)據(jù);以及在報告設計中聲明要被置于至少一個嵌套行中的數(shù)據(jù),其中,所述聲明包括聲明性的標記,以指示出所述至少一個嵌套行是否能夠按照需要擴展成多個嵌套行,以容納用于報告的數(shù)據(jù)。
2.如權利要求1所述的方法,其特征在于,所述聲明要被置于至少一個列中的數(shù)據(jù)和所述聲明要被置于至少一個行中的數(shù)據(jù)包括通過圖形化地表示所述報告設計的圖形用戶界面GUI來輸入數(shù)據(jù)。
3.如權利要求1所述的方法,其特征在于,所述聲明要被置于至少一個列中的數(shù)據(jù)和所述聲明要被置于至少一個行中的數(shù)據(jù)包括可擴展標記語言XML聲明。
4.如權利要求1所述的方法,其特征在于,所述聲明性標記包括XML模式文檔中定義的標準標記。
5.如權利要求1所述的方法,其特征在于,還包括在報告設計中聲明要被置于至少一個嵌套列中的數(shù)據(jù),其中,所述聲明包括聲明性的標記,以指示出所述至少一個嵌套列是否能夠按照需要擴展成多個嵌套列,以容納用于報告的數(shù)據(jù)。
6.如權利要求1所述的方法,其特征在于,還包括對列擴展成多個列提供限制,這是通過規(guī)定將在所述多個列中表示出的數(shù)據(jù)的范圍來進行的。
7.如權利要求1所述的方法,其特征在于,還包括對行擴展成多個行提供限制,這是通過規(guī)定將在所述多個行中表示出的數(shù)據(jù)的范圍來進行的。
8.一種載有用于處理報告的指令的計算機可讀媒介,其特征在于,所述指令包括用于讀取報告設計的指令;用于識別所述報告設計中的聲明性的標記的指令,其中,所述聲明性的標記與至少一個列相關聯(lián),所述聲明性的標記指示出所述至少一個列是否能按照需要擴展成多個列以容納用于報告的數(shù)據(jù);用于在識別出與所述至少一個列相關聯(lián)的聲明性的標記時,按照需要生成多個列以容納用于報告的數(shù)據(jù)的指令;用于識別與至少一個嵌套列相關聯(lián)的聲明性的標記的指令,其中,所述聲明性的標記指示出所述至少一個嵌套列是否能按照需要擴展成多個嵌套列以容納用于報告的數(shù)據(jù);用于在識別出與所述至少一個嵌套列相關聯(lián)的聲明性的標記時,按照需要生成多個嵌套列以容納用于報告的數(shù)據(jù)的指令;用于識別所述報告設計中的聲明性的標記的指令,其中,所述聲明性的標記與至少一個行相關聯(lián),所述聲明性的標記指示出所述至少一個行是否能按照需要擴展成多個行以容納用于報告的數(shù)據(jù);用于在識別出與所述至少一個行相關聯(lián)的聲明性的標記時,按照需要生成多個行以容納用于報告的數(shù)據(jù)的指令;
9.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于從數(shù)據(jù)源中檢索報告設計中規(guī)定的數(shù)據(jù)的指令。
10.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于生成報告的指令。
11.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于提供允許在報告設計中輸入聲明性的標記的GUI的指令,所述報告設計視覺上呈現(xiàn)在所述GUI上。
12.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于識別與至少一個嵌套行相關聯(lián)的聲明性的標記的指令,其中,所述聲明性的標記指示出所述至少一個嵌套行是否能按照需要擴展成多個嵌套行以容納用于報告的數(shù)據(jù);以及用于生成所述多個嵌套行的指令。
13.如權利要求8所述的計算機可讀媒介,其特征在于,所述報告設計包括XML文件。
14.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于識別列的擴展的限制的指令,如果識別出這種限制,所述按照需要生成多個列的步驟包括生成僅用以容納所述列的擴展的限制中規(guī)定的數(shù)據(jù)的列。
15.如權利要求8所述的計算機可讀媒介,其特征在于,還包括用于識別行的擴展的限制的指令,如果識別出這種限制,所述按照需要生成多個行的步驟包括生成僅用以容納所述行的擴展的限制中規(guī)定的數(shù)據(jù)的行。
16.一種使用指示出動態(tài)和靜態(tài)列和行的聲明性的標記來設計報告的裝置,包括用于生成報告設計的裝置;用于在所述報告設計中標記列的裝置,其中,當所述列被標記時,所述列被聲明為動態(tài)列,報告處理軟件可將動態(tài)列擴展成多個列;用于在所述報告設計中標記嵌套列的裝置,其中,當嵌套列被標記時,所述嵌套列被聲明為動態(tài)嵌套列,報告處理軟件可將動態(tài)嵌套列擴展成多個嵌套列;以及用于在所述報告設計中標記行的裝置,其中,當所述行被標記時,所述行被聲明為動態(tài)行,報告處理軟件可將動態(tài)行擴展成多個行。
17.如權利要求16所述的設計報告的裝置,其特征在于,所述用于生成報告設計的裝置包括載有計算機可執(zhí)行指令的計算機可讀媒介。
18.如權利要求16所述的設計報告的裝置,其特征在于,所述用于生成報告設計的裝置包括用于顯示向報告設計者呈現(xiàn)可視的報告設計的圖形用戶界面的裝置。
19.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于生成對應于所述報告設計的XML文件的裝置。
20.如權利要求19所述的設計報告的裝置,其特征在于,所述用于標記的裝置包括在XML模式文檔中定義的標準標記。
21.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于在所述報告設計中標記嵌套行的裝置,其中,當嵌套行被標記時,所述嵌套行被聲明為動態(tài)嵌套行,報告處理軟件可將動態(tài)嵌套行擴展成多個嵌套行。
22.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于對列擴展成多個列進行限制的裝置。
23.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于對行擴展成多個行進行限制的裝置。
24.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于從數(shù)據(jù)源檢索報告設計中規(guī)定的數(shù)據(jù)的裝置。
25.如權利要求16所述的設計報告的裝置,其特征在于,還包括用于生成報告的裝置。
全文摘要
報告的列和/或行可被聲明性地定義為動態(tài)或靜態(tài)。聲明性的定義可由任何標記來表示。如果列或行被聲明性地指定為動態(tài),則它可被擴展成多個列或行。如果列或行被指定為靜態(tài),則它仍為單個列或行,以僅僅表現(xiàn)出規(guī)定的列或行數(shù)據(jù)。列和行的子組也可被聲明性地定義為動態(tài)或靜態(tài)。靜態(tài)列或行可不包含子列/行,或可包含多個靜態(tài)列/行、多個動態(tài)列/行、或兩者的任意組合。類似地,動態(tài)列或行也可包含上述組合。
文檔編號G06F17/30GK1713181SQ20051007401
公開日2005年12月28日 申請日期2005年5月23日 優(yōu)先權日2004年6月23日
發(fā)明者C·A·海斯, J·D·卡爾森 申請人:微軟公司