Oracle報表創(chuàng)建、修改及其功能介紹
Oracle報表具有一些很強的特性,可以容易地瀏覽數(shù)據(jù),但是需要對表單做一些額外的工作。尤其是,報表擅長于顯示小計——甚至是在多層次上。即使組織機構(gòu)選擇在線瀏覽數(shù)據(jù),但報表仍是創(chuàng)建數(shù)據(jù)的細節(jié)及合計數(shù)據(jù)的有用工具。
一、創(chuàng)建和修改Oracle報表
1.報表開發(fā)器介紹
報表的原來目的是創(chuàng)建數(shù)據(jù)的打印清單,給決策人提供信息?,F(xiàn)在,決策人更喜歡在一個網(wǎng)站上直接處理數(shù)據(jù),而完全不用打印紙。在許多情況下,你可以使用表單為決策人檢索數(shù)據(jù)提供一個互動環(huán)境。Oracle Developer Suite包括了一個報表開發(fā)器工具,并帶有幫助你建立基本報表的向?qū)А?/P>
2.Oracle報表的類型
在試圖建立報表前,需要了解報表使用的主要布局。主要的報表類型有表格式報表(tabular report)或簡單列表、控制中斷或分組報表(group report)、矩陣式報表(matrix report)或交叉表、郵件標簽(mailing label)。圖10-1示出一個表格式報表的例子。表格式報表是數(shù)據(jù)的簡單列表,如果表中包含數(shù)值數(shù)據(jù),則底部通常有小計。這種報表易于創(chuàng)建和閱讀。但是,對于體面一點的在線訪問,這種報表不特別有用。幾年前,經(jīng)理們需要打印出巨長的數(shù)據(jù)清單放在手邊做參考?,F(xiàn)在簡單到只要發(fā)布一個查詢,就可獲得所需的數(shù)據(jù)或合計的簡短列表。但是,你仍需要能制作這些報表。僅記住,它們應該一直被排列好。
3.建立和修改Oracle報表
Oracle提供了一個報表向?qū)В蓭椭銊?chuàng)建大多數(shù)常見的報表??偟膩碚f,它做了一件好事;但是你仍不得不修改報表并多次整理它,直到它們更專業(yè)化為止。首先面對的挑戰(zhàn)之一是避免在一行上放置一切內(nèi)容。如果你試圖將太多的內(nèi)容填入一個頁面,則報表向?qū)新闊?。首先試著縮小字體,將更多的數(shù)據(jù)壓縮進報表中。但報表幾乎不工作,你必須返回來手工修改它。最好打住,讓向?qū)扔帽M可能少的項建立報表。如果你后來想要增加更多的項,可以一個一個地加入,同時檢查添加是否恰當。
二、增強Oracle報表的功能
前面,我們已經(jīng)對向?qū)?chuàng)建的基本報表做過一些變動。但是,有些報表需要做的工作比這要多的多。尤其是矩陣式報表,它難以建立模板,因此通常需要更多的功能增強。主要問題是標準模板是為帶有縱向(portrait)布局的報表設(shè)計的,并且只顯示有限數(shù)量的列。而矩陣式報表有多個列并可延伸到多個頁面。為了說明此過程,你將使用向?qū)?chuàng)建一個矩陣式報表,按月份和按代理對銷售額求和。
為了使查詢更簡單,報表將計算要價的合計——它不是最終的銷售價。如果你想要的是最終銷售價,可以編寫一個查詢從CustAgentList表中提取最后的BidPrice,并通過聯(lián)結(jié)ListID,將該查詢添加到報表中。但是,本章主要關(guān)心的是報表編寫器,而上述查詢則稍有些復雜,且令人分心。因此,使用AskingPrice來簡化此問題,以便你只啟動向?qū)В?/P>
(1) 啟動Report Builder并使用向?qū)?chuàng)建題為Sales by Month and Agent的矩陣式報表。只選擇簡單的Matrix報表。你不需要給該報表添加分組。矩陣組為每個組創(chuàng)建不同的矩陣;該Oracle報表只需要一個矩陣。
(2) 從Agents、Listings和SaleStatus表中創(chuàng)建一個查詢。設(shè)置條件為已售房產(chǎn)的清單(即,SaleStatus.SaleStatus = 'Sold')。按代理的姓和名排序。小心選擇并提?。篖astName、FirstName和AskingPrice。
現(xiàn)在進入棘手部分。經(jīng)理想要該報表按月份顯示合計,月份顯示在報表頂部代理顯示在左下角。Listing表包括兩個日期。為了簡單起見,可以使用EndListDate。(如果你花時間建立查詢來獲得實際的銷售價,還會獲得實際的銷售日期,不過在這里并不是關(guān)鍵)。問題是該日期是一個實際的日子,而你需要的只是月份。答案是創(chuàng)建一個新列,使用TO_CHAR(date, 'MM')函數(shù)將該日期轉(zhuǎn)換為相應的月份。
(3) 建立該查詢時有一個Define Column按鈕,你可以使用它添加一個新列。但是它不能實際保存該列的描述,因此,簡單直接地編輯SQL并用SaleMonth別名添加該列通常更容易。
(4) 為了定義矩陣,你必須告訴向?qū)г谛?、列和矩陣單元中顯示的字段。首先,選擇行的字段。如本例的圖10-13所示,選取LastName和FirstName字段。因為該報表不使用組,所以這兩個字段都屬于Level 1。
(5) 同樣,選擇新的SaleMonth字段作為列。在下一個向?qū)辽?,選擇AskingPrice列并單擊Sum按鈕,告訴Reports Builder計算每個銷售代理每月的要價總和。類似地,在合計屏上,選取SumAskingPrice并計算其Sum獲得行和列的合計。
(6) 在標簽屏中,通過增加空間并設(shè)置為大寫字母,整理標簽。但是,你需要使列變窄,以便設(shè)置Month標簽,而不是Sale Month。默認的寬度眼下應該比較窄。在模板屏上,必須選擇No template選項。
出矩陣式報表的初始Paper Design視圖。盡管它包含了所有希望的數(shù)據(jù),但稍微簡單了些并有點難以閱讀。注意,該報表很稀疏,因為在該時間周期內(nèi)只有8次銷售活動。如果你想看到有更多數(shù)據(jù)的Oracle報表,可以改變查詢條件,將Sold改為For Sale,但眼下我們還是使用這個小報表。
為了使報表看上去類似于分組報表,應該在左上角添加徽標。像以前那樣,使用Insert|Image菜單選項并調(diào)整徽標的尺寸。
【編輯推薦】