




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#prompt ( pOrderNumber ,integer )#IBM Cognos B最佳實(shí)踐:報(bào)表設(shè)計(jì)高級提示和提示性能調(diào)優(yōu)1簡介1.1目的本文檔旨在向報(bào)表創(chuàng)建者展示如何處理第一個提示頁面性能低下的問題。1.2適用范圍這里的信息只適用于 IBM Cognos 8.2 B。2第一個提示頁面的性能當(dāng)用戶運(yùn)行包含多個復(fù)雜查詢的報(bào)表時,常常需要等待很長時間才會看到第一個提示頁面出現(xiàn)。例如,在一個客戶場景中,報(bào)表 用了 40秒才顯示出第一個提示頁面??梢酝ㄟ^兩方面的努力改進(jìn)第一個提示頁面的性能:1) 減少提示調(diào)節(jié)(prompt reconciliation )的時間2) 減少為提示控件獲取數(shù)據(jù)的
2、時間 3提示調(diào)節(jié)3.1什么是提示調(diào)節(jié)?提示調(diào)節(jié)確保參數(shù)定義與參數(shù)的用法匹配。在篩選和計(jì)算中定義參數(shù)。在提示中使用定義好的參數(shù)。 參數(shù)定義包含幾個關(guān)鍵項(xiàng):基數(shù)-可以提供給參數(shù)的輸入值的數(shù)量。離散性-決定輸入值是定義單一值,還是定義一個值范圍。可選性-決定參數(shù)在篩選或計(jì)算的上下文中是必需的,還是可選的。Numeric、數(shù)據(jù)類型-為了與引用的其他數(shù)據(jù)項(xiàng)或常量匹配,在篩選或計(jì)算的上下文中期望的數(shù)據(jù)類型。數(shù)據(jù)類型可以是Date、Time、Date Time、Interval、String 或 Member Unique Name (MUN)。3.1.1篩選表達(dá)式 請考慮可選的篩選:Order numbe
3、r = ?pO rderNumber?通過分析這個篩選,可以判斷出參數(shù)POrderNumber的一些性質(zhì):基數(shù):單一值等號表明只能使用單一值。使用多個值需要適當(dāng)?shù)牟僮鞣?,比如“n ”:Order number in ?pO rderNumber?離散性:簡單值等號表明了這一點(diǎn)。值的范圍需要適當(dāng)?shù)牟僮鞣?,比如iLrange ”:Order number in_range ?pO rderNumber?o如果一個參數(shù)在多個上下文中使用,那么對于是范圍值的參數(shù),所有引用都必須是范圍值??蛇x性:可選的*數(shù)據(jù)類型: 這個參數(shù)是數(shù)字,因?yàn)?Order number數(shù)據(jù)項(xiàng)是數(shù)字?,F(xiàn)在,把參數(shù)的特性應(yīng)用于引用
4、它的提示。這意味著,提示控件會體現(xiàn)參數(shù)的一部分特性,從而讓提示控件與參數(shù)定義保持兼 容。如果在創(chuàng)建的提示頁面中引用參數(shù),會在運(yùn)行時修改提示定義,以便與參數(shù)的基數(shù)、可選性和離散性匹配。數(shù)據(jù)類型不匹配 可能會導(dǎo)致運(yùn)行時錯誤。如果沒有創(chuàng)建的提示頁面,那么這些特性應(yīng)用于生成的提示頁面上的提示。3.1.2數(shù)據(jù)項(xiàng)表達(dá)式與通過宏表達(dá)式定義的參數(shù)不同,在數(shù)據(jù)項(xiàng)表達(dá)式中使用的參數(shù)是必需的。3.1.3宏表達(dá)式在宏表達(dá)式中定義的參數(shù) 1可以是可選的或必需的,可以是單一值或多值。請考慮宏表達(dá)式:這個篩選定義為可選的,所以參數(shù)也是可選的。參數(shù)也可以是必需的。如果一個參數(shù)在多個上下文中使用,那么對于可選的參數(shù),所有引用都
5、必須是可選的。 Numeric基數(shù):單一值prompt()宏函數(shù)只接受單一輸入值。可以用prompt()定義多個值:#promptmany ( pOrderNumber , integer )#簡單值提示宏總是簡單值,而不是范圍。必需的沒有默認(rèn)值(這個宏函數(shù)的第三個可選參數(shù))表明了這一點(diǎn)。 包含可選參數(shù)的示例如下:#prompt ( pOrderNumber , integer ,離散性:*可選性:5 )#3.2提示調(diào)節(jié)如何影響性能?為了執(zhí)行提示調(diào)節(jié),IBM Cognos 8要檢查查詢,判斷有哪些參數(shù)及其特性。查詢越大、越復(fù)雜,這個過程花費(fèi)的時間越長。在IBM Cognos 8.1中,一個包含
6、200多個查詢的客戶報(bào)表需要超過 40秒才能顯示出第一個提示頁面。大多數(shù)時間花費(fèi)在提示調(diào)節(jié) 方面。3.3在Cognos 8.2中如何改進(jìn)提示調(diào)節(jié)? 在IBM Cognos 8.2中通過三種方式改進(jìn)提示調(diào)節(jié):更快的提示調(diào)節(jié)用于提示調(diào)節(jié)調(diào)優(yōu)的報(bào)表服務(wù)器屬性用于提示調(diào)節(jié)調(diào)優(yōu)的查詢屬性*3.4 IBM Cognos 8.2中更快的提示調(diào)節(jié)首先,在IBM Cognos 8.2中提示調(diào)節(jié)過程已經(jīng)得到優(yōu)化,大大提高了速度。與IBM Cognos 8.1相比,這個過程花費(fèi)的時間減少了75% 到 90%。例如,在IBM Cognos 8.2中客戶示例報(bào)表的提示調(diào)節(jié)只花費(fèi)了5秒,與IBM Cognos 8.1中的
7、40多秒相比降低了 80%。只需遷移到IBM Cognos 8.2,就實(shí)現(xiàn)了 80%的性能改進(jìn)。不需要采取其他措施。3.5用于提示調(diào)節(jié)調(diào)優(yōu)的報(bào)表服務(wù)器屬性IBM Cognos 8.2為整個系統(tǒng)和具體報(bào)表的提示調(diào)節(jié)調(diào)優(yōu)提供了三個相互關(guān)聯(lián)的選項(xiàng)。第一個選項(xiàng)是一個針對整個報(bào)表服務(wù)器啟用的報(bào)表服務(wù)器高級屬性:RSV P.PROMP T.RECONCILIATIO這個屬性有幾個值:COMP LETE在顯示第一個提示頁面之前,調(diào)節(jié)所有查詢。這是默認(rèn)設(shè)置,用來確保與以前版本的兼容性。CHUNKED-分批調(diào)節(jié)所有查詢,直到調(diào)節(jié)了第一個提示頁面所需的參數(shù)為止。以不固定的次序處理查詢??梢杂酶呒壏?wù)器屬性RSV
8、P.PROMP T.RECONCILIATION.CHUNKS修改 CHUNK大 小。默認(rèn)的 CHUNK 大小是 5 個查詢。GROUPED-按組調(diào)節(jié)查詢,直到調(diào)節(jié)了第一個提示頁面所需的參數(shù)為止。這些組如下:*篩選的報(bào)表查詢 篩選的提示查詢 未篩選的報(bào)表查詢 未篩選的提示查詢*按這些組的次序處理查詢,直到調(diào)節(jié)了第一個提示頁面中引用的所有參數(shù)為止。常常只需處理第一個或前兩個組。但是,在某些 情況下,需要處理所有查詢。例如,如果在提示查詢中的計(jì)算查詢項(xiàng)中引用參數(shù),就會發(fā)生這種情況。報(bào)表服務(wù)器調(diào)節(jié)第一個提 示頁面的參數(shù)之后,向用戶顯示這個頁面。如果后續(xù)提示頁面引用在已經(jīng)處理的查詢中沒有的參數(shù),在顯示
9、這些提示頁面之前, 報(bào)表服務(wù)器可能需要調(diào)節(jié)更多查詢。CHUNKED GROUPED分批調(diào)節(jié)查詢組中的查詢,直到調(diào)節(jié)了第一個提示頁面所需的參數(shù)為止。我們的客戶場景只包含一個篩選的查詢,但是假設(shè)報(bào)表中的所有200個查詢都使用相同的參數(shù)進(jìn)行篩選。GROU PED會同時調(diào)節(jié)這200個查詢,因?yàn)樗胁樵兌紝儆诤Y選的報(bào)表查詢組。CHUNKED每次調(diào)節(jié)x個查詢,x是CHUNKED大小(默認(rèn)值為5)。因此對于CHUNKED GROUPED將調(diào)節(jié)5個查詢。如果找到了第一個提示頁面所需的參數(shù),就顯示頁面。如果沒有找到,就處理后5個查詢,直到找到參數(shù)為止。以我們的客戶報(bào)表為例,設(shè)置RSV P.PROMP T.REC
10、ONCILIATION = GROUP會迫使提示調(diào)節(jié)首先處理包含篩選的查詢(我們只有一個這樣的查詢)。這導(dǎo)致客戶示例報(bào)表的提示調(diào)節(jié)在IBM Cognos 8.2中只需花費(fèi)不到1秒,與IBM Cognos 8.1中的40多秒相比性能提高了 98%。只需設(shè)置一個高級服務(wù)器屬性,就實(shí)現(xiàn)了98%的性能改進(jìn)。不需要采取其他措施。坦白地說,這個示例不太典型,因?yàn)楹Y選的查詢和非篩選的查詢的比例高于一般水平。但是,這個示例說明GROU PED調(diào)節(jié)選項(xiàng)的優(yōu)點(diǎn)是只需要處理所有查詢中的一部分。關(guān)于如何處理大量的篩選查詢,請參見用于提示調(diào)節(jié)調(diào)優(yōu)的查詢屬性 ”。3.5.1最佳默認(rèn)設(shè)置是什么?如果使用COMPLETE之外
11、的其他設(shè)置,可能會導(dǎo)致運(yùn)行時錯誤,因?yàn)橄嗤膮?shù)可能在同一報(bào)表中以不同方式定義兩次或更多 次。假設(shè)報(bào)表中有一個可選的篩選(比如X in ?P 1?)和一個計(jì)算 Y + ?P 12篩選把P1定義為可選的和多值的。計(jì)算把P1定義為必需的和單值的。如果使用COMPLETE查詢調(diào)節(jié),就會處理所有查詢,而且使用限制性最強(qiáng)的定義修改提示,這會產(chǎn)生必需的單值提示。如果使用GROUPED就只處理篩選的查詢,這允許使用可選的多值提示。如果用戶跳過這個提示或者選擇多個值,那么當(dāng)處理計(jì) 算時就會產(chǎn)生運(yùn)行時錯誤。說到這里要補(bǔ)充一點(diǎn),在使用高級調(diào)節(jié)屬性時,正確使用參數(shù)并解決這些不匹配的參數(shù)定義應(yīng)該是創(chuàng)建者的責(zé)任。在使用
12、CHUNKED GROUPE時,還可能有兩個或更多篩選以不同方式定義同一個參數(shù)。同樣,這也是在創(chuàng)建報(bào)表時計(jì)劃和實(shí)現(xiàn)不 完善的表現(xiàn)。出于性能考慮,CHUNKED GROU PE是推薦的設(shè)置,因?yàn)樗试S只處理部分查詢組。但是,應(yīng)該進(jìn)行適當(dāng)?shù)膱?bào)表測試,以確保不會 出現(xiàn)由于報(bào)表創(chuàng)建者使用參數(shù)的方式不一致所導(dǎo)致的運(yùn)行時錯誤。默認(rèn)的CHUNK大小5對于大多數(shù)情況已足夠。3.6用于提示調(diào)節(jié)調(diào)優(yōu)的查詢屬性Report對于某些報(bào)表,僅僅設(shè)置高級報(bào)表服務(wù)器屬性可能無法實(shí)現(xiàn)良好的性能,還需要手動調(diào)優(yōu)。報(bào)表創(chuàng)建者可以使用新的Studio查詢屬性Use for Parameter Info決定提示調(diào)節(jié)的執(zhí)行方式。這個新
13、屬性只能在高級報(bào)表服務(wù)器屬性RSVP.PROMPreconciliation置為 GROUPED或 CHUNKED GROUPE時使用。Use for P arameter Info = True 查詢 篩選的報(bào)表查詢篩選的提示查詢 未篩選的報(bào)表查詢 未篩選的提示查詢這個屬性實(shí)際上創(chuàng)建一個新的查詢處理組,系統(tǒng)在處理篩選的報(bào)表查詢之前處理這個組。新的處理次序是:*如果在第一個組中找到了所需的參數(shù),就不再處理其他查詢。這個屬性在兩個場景中很有用。200個查詢來調(diào)節(jié)Use for3.6.1在多個查詢篩選中使用相同的參數(shù) 仍然以包含200個查詢的示例報(bào)表為例,假設(shè)所有200個查詢中的篩選都引用相同的參
14、數(shù)。以前必須處理所有參數(shù)。實(shí)際上,只需處理其中任意一個查詢,就可以收集到所需的信息。報(bào)表創(chuàng)建者可以選擇任何查詢,并設(shè)置查詢屬性 Parameter Info = True。系統(tǒng)只處理這個查詢,就會找到所需的參數(shù)并顯示第一個提示頁面,不必處理其他查詢。3.6.2在每個查詢篩選中使用不同的參數(shù) 現(xiàn)在,考慮一個完全不一樣(有點(diǎn)兒不真實(shí))的用例。我們有200個查詢,每個查詢都引用一個不同的參數(shù),在第一個提示頁面中引用所有200個參數(shù)。在這種情況下,必須處理所有查詢,這會導(dǎo)致性能降低(回到5秒水平)。有一個非常聰明的辦法:創(chuàng)建者可以創(chuàng)建一個定義所有200個參數(shù)的查詢。不創(chuàng)建任何引用這個新查詢的布局(即,
15、沒有列表、交叉表或圖表使用這個查詢)。只在這個查詢上設(shè)置查詢屬性Use for P arameter Info = True?,F(xiàn)在,在運(yùn)行報(bào)表時,只處理這一個查詢。因?yàn)樵诓季种胁灰眠@個查詢,它不會實(shí)際執(zhí)行。這樣就解決了第一個提示頁面的性能問題,而且不會有額外的開銷。包含200個查詢而且每個查詢使用不同的參數(shù)這樣的示例有點(diǎn)兒極端,但是如果處理給定的查詢或查詢集造成了性能問題,就可 以考慮使用這種方法。估計(jì)只有非常少的報(bào)表需要使用Use for Parameter Info查詢屬性,因?yàn)镮BM Cognos 8.2本身和使用 RSV P.PROMP T.RECONCI LI ATIONGROU
16、PED產(chǎn)生的性能改進(jìn)能夠解決大多數(shù)性能問題。3.6.3提供不利提示 要確保您選擇的查詢提供所需的所有參數(shù)。如果在沒有定義所有參數(shù)的查詢集上設(shè)置Use For Parameter Info 查詢提示(hint),會對性能產(chǎn)生消極影響,因?yàn)榈谝粋€請求沒有調(diào)節(jié)所有參數(shù),還需要通過另一個請求獲得其他參數(shù)的參數(shù)特性。3.7 SAP考慮事項(xiàng)在有非層次化數(shù)據(jù)源變量的SAP環(huán)境中,變量數(shù)量大而且這些變量具有許多可能的值,這會顯著影響性能。建議不要在這些環(huán)境中使用高級服務(wù)器屬性,但是可以使用Use For parameter Info 查詢提示改進(jìn)性能。4提示查詢性能提示查詢用于填充提示控件。在運(yùn)行完提示查詢之
17、前,無法顯示提示頁面。在默認(rèn)情況下,這些查詢在每次向用戶顯示提示頁面 時運(yùn)行一次。在改進(jìn)提示查詢性能時,要關(guān)注三個方面: 查詢的數(shù)量 避免重復(fù)運(yùn)行提示查詢 并行地運(yùn)行提示查詢4.1 查詢的數(shù)量 查詢數(shù)量越大,處理提示頁面花費(fèi)的時間越長。盡管下面討論的機(jī)制可以減少所需的時間,但是有時候第一個提示頁面包含的提 示查詢太多,必須處理它們才能顯示提示頁面??梢园烟崾痉指顬閮蓚€或更多頁面。這樣每個提示頁面包含的查詢就比較少了。 可以使用選項(xiàng)卡式的提示頁面。系統(tǒng)只運(yùn)行實(shí)際向用戶顯示的提示控件所需的查詢,不運(yùn)行不活躍的選項(xiàng)卡的提示查詢。附錄 講解如何創(chuàng)建選項(xiàng)卡式提示界面。可以使用隱藏在條件塊中的提示,這些提
18、示只在用戶已經(jīng)響應(yīng)了一些提示并重新提示報(bào)表時顯示。同樣,因?yàn)橄到y(tǒng)只運(yùn)行實(shí)際向 用戶顯示的提示控件所需的查詢,不運(yùn)行隱藏塊中的提示查詢。4.2 適當(dāng)?shù)奶崾究丶?一些提示控件不適合容納大量數(shù)據(jù)。例如,包含100,000 個條目的值提示(選擇列表)性能會很差,而且使用很不方便。對于這么大量的數(shù)據(jù),更合適的控件是Select & search 提示、 Cascading 提示或 Tree 提示,因?yàn)樗鼈冊谧畛躏@示時并不裝載整個數(shù)據(jù)集。注意,如果創(chuàng)建者非要使用包含大量數(shù)據(jù)的提示,那么在默認(rèn)情況下數(shù)據(jù)會在 5000 行處截?cái)?,而且系統(tǒng)并不給出警告??梢允褂?提示控件的Rows Per Page屬性顯示更大
19、的數(shù)據(jù)集。4.3 緩存提示查詢在 IBM Cognos 8.1 中,可以緩存提示查詢。如果提示中的值不經(jīng)常變動(比如每天一次而不是隨時),而且提示并不依靠另一個 提示的值篩選提示查詢,就可以使用這種技術(shù)。例如,可以緩存父級聯(lián)提示的值,但是不能緩存子(或?qū)O)提示,因?yàn)檫@些后續(xù) 提示依靠父提示的值執(zhí)行查詢。使用作業(yè)執(zhí)行提示查詢并緩存報(bào)表的值。用適當(dāng)?shù)恼{(diào)度計(jì)劃(比如每天或每周)創(chuàng)建作業(yè),從而反映提示值的變動頻率。在作業(yè)中添加需要刷新提示查詢的報(bào)表之后,把Default Run選項(xiàng)設(shè)置為 Run the report to Refresh the Report Cache (也可以為每個報(bào)表步驟設(shè)置這
20、個選項(xiàng))。當(dāng)作業(yè)運(yùn)行時,它只執(zhí)行提示查詢并把結(jié)果緩存在 Content Store 中。如果在多個位置有提示,那么在作業(yè)步驟中設(shè)置這些位置, 就會緩存所有位置的提示值。當(dāng)用戶運(yùn)行報(bào)表時,獲取緩存的查詢值;這一般會提高性能。 注意,無論是否考慮性能因素,這也是減少對數(shù)據(jù)庫的查詢數(shù)量的好方法,因?yàn)樵谟脩裘看握埱筮\(yùn)行報(bào)表時不再需要執(zhí)行提示查 詢了。4.4 并行地運(yùn)行提示查詢 如果提示值是高度動態(tài)的,緩存不是合適的選項(xiàng),那么可以同時執(zhí)行多個提示查詢。在默認(rèn)情況下,單一報(bào)表中的所有查詢一個接一個地運(yùn)行??梢酝瑫r運(yùn)行提示查詢或數(shù)據(jù)查詢。報(bào)表服務(wù)器使用 helper 的概念管理可以在報(bào)表服務(wù)器中同時執(zhí)行的查
21、詢數(shù)量。例如,把 helper 的數(shù)量設(shè)置為 10 就意味著整個報(bào)表 服務(wù)器實(shí)例可以同時執(zhí)行另外 10 個查詢。報(bào)表服務(wù)器高級屬性 RSV P.CONCURRENTQUERY.NUMHEL PERS PERP ROC于設(shè)置服務(wù)器中可用的 hel per數(shù)量。默認(rèn)值是零。如果 不設(shè)置這個屬性,就無法同時運(yùn)行查詢。還必須使用報(bào)表服務(wù)器高級屬性RSV P.CONCURRENTQUERY.MAXNUMHEL PERS PERREP置每個報(bào)表可以使用的 hel per數(shù)量。默認(rèn)值是 1,即只允許每個報(bào)表每次執(zhí)行一個查詢;必須把它至少設(shè)置為2,才能允許運(yùn)行并行查詢。設(shè)置這兩個選項(xiàng)之后,在默認(rèn)情況下只對批執(zhí)
22、行運(yùn)行并行查詢。這是因?yàn)樵诮换ナ綀?zhí)行時,這可能會導(dǎo)致運(yùn)行查詢,但是用戶根 本不看它的結(jié)果,因此不必要地消耗了資源。假設(shè)一個報(bào)表有兩個頁面,每個頁面有一個列表。用戶運(yùn)行這個報(bào)表;啟用并行查 詢,讓這兩個列表查詢同時運(yùn)行。用戶看了第一個頁面/ 列表,然后關(guān)閉瀏覽器。第二個查詢已經(jīng)并行地運(yùn)行了,但是未被使用,這浪費(fèi)了資源。稍后討論如何更好地處理這種情況。RSV P.CONCURRENTQUERY.ENABLEDFORINTERACTIVEOU設(shè)置為要想為交互式執(zhí)行啟用并行查詢,需要把報(bào)表服務(wù)器高級屬性True。在給定的報(bào)表中,還必須使用查詢屬性 Execution Method 決定哪些查詢可以并行
23、地運(yùn)行:圖 1.查詢屬性 Execution MethodProcessingAvoid iDtvisoii by Zero Rolup PrtKESsng Execution Optrniiitwi MaxTuun Rows Retrieved Hajomum TablesMdsmun Executon TmeManvri Text Btob 6arKtef5 Outer Join AlowcdSuppress.Cross ProAJCt AlowedUse SQL With ClauseUsciaal Spartton MettiodUse 矽Pzc InfaSQL jon syntaxU
24、se hl Behavior d MHcelanHnNameQuerri在提示查詢上設(shè)置這個屬性允許它們并行地運(yùn)行,這常常會提高性能。5結(jié)束語IBM Cognos 8.2顯著改進(jìn)了第一個提示頁面的基本性能,即使不進(jìn)行定制配置,性能也很好。 還可以通過以下措施進(jìn)一步提高提示性能:提示調(diào)節(jié)明智的提示頁面設(shè)計(jì)提示查詢緩存并行的查詢執(zhí)行*為了進(jìn)一步提高提示性能,建議在所有IBM Cognos 8.2服務(wù)器上設(shè)置 RSV P.PROMPRECONCILIATION CHUNKED GROUP還應(yīng)該進(jìn)行適當(dāng)?shù)膱?bào)表測試)。6附錄A -選項(xiàng)卡式提示頁面注意:這份資料最初是一份單獨(dú)的P roven P ract
25、ices文檔。這里的內(nèi)容與原文檔中相同。6.1更快的選項(xiàng)卡式提示頁面 這里的場景是,客戶希望向最終用戶提供報(bào)表,在提示頁面中使用選項(xiàng)卡式用戶界面而不是一系列提示頁面。最常用的提示出現(xiàn) 在第一個選項(xiàng)卡中,其他選項(xiàng)卡顯示不太常用的提示。圖2.選項(xiàng)卡式提示頁面E I我們見過的一些應(yīng)用程序示例有多達(dá)60個提示,它們分布在 6到8個選項(xiàng)卡上。有兩個問題會影響這些報(bào)表的性能。首先,提示數(shù)量大意味著Cognos 8在運(yùn)行報(bào)表之前必須分析許多查詢。一般情況下,這意味著每個提示有一個查詢,還要加上報(bào)表查詢本 身。這個問題只能通過減少報(bào)表中使用的查詢數(shù)量來解決,這超出了本文的范圍。第二,原來使用的HTMLJava
26、Scri pt技術(shù)的性質(zhì)決定了它們的性能非常差。生成選項(xiàng)卡的標(biāo)準(zhǔn)HTMLJavaScri pt技術(shù)允許用戶在不訪問服務(wù)器的情況下切換選項(xiàng)卡。這意味著必須在顯示第一個選項(xiàng)卡之前填充所有提示(多達(dá) 60個)。因?yàn)樵谀J(rèn)情況下查詢是串行運(yùn)行的,需要的提示查詢越多,用戶等待的時間就越長。6.2解決方案概述這個解決方案使用條件塊顯示提示。選項(xiàng)卡本身仍然是用HTML和JavaScri pt創(chuàng)建的。使用條件塊的優(yōu)點(diǎn)是,系統(tǒng)知道隱藏的塊中的提示是不可見的,因此不運(yùn)行填充它們所需的查詢。如果用戶切換選項(xiàng)卡,提示變得可見并運(yùn)行相關(guān)聯(lián)的查詢。缺點(diǎn)是切換選 項(xiàng)卡需要向服務(wù)器發(fā)出請求。實(shí)現(xiàn)這種技術(shù)的提示頁面使用條件塊決
27、定顯示哪些提示。請想像一系列重疊的矩形,在任何時候只顯示其中的一個。這些塊在任何時候只有其中的一個是可見的,但是所有選項(xiàng)卡都是一直可見的。 看起來像在其他選項(xiàng)卡前面。非當(dāng)前的選項(xiàng)卡是灰色的,讓它們不太突出。當(dāng)前選項(xiàng)卡的邊框和文本顏色設(shè)置為黑色,讓它從某種程度上來說,編寫報(bào)表相當(dāng)簡單。我們將創(chuàng)建一個條件塊以及與選項(xiàng)卡數(shù)量相同的塊一一在以上示例中是4個。然后,以表格單元格的形式創(chuàng)建基本選項(xiàng)卡結(jié)構(gòu)(矩形),根據(jù)需要設(shè)置邊框。用HTML和一些簡單的JavaScript創(chuàng)建選項(xiàng)卡中顯示的文本。當(dāng)用戶單擊選項(xiàng)卡(實(shí)際上是單擊選項(xiàng)卡中的文本)時,顯示相關(guān)聯(lián)的條件塊,修改選項(xiàng)卡邊框和文本顏色,顯示相關(guān)聯(lián)的塊。
28、 在后臺,通過設(shè)置一個參數(shù)值指定顯示哪個選項(xiàng)卡,然后重新提示報(bào)表。在理想情況下,我們使用提示控件或提示按鈕設(shè)置參數(shù) 值并重新提示。但是,沒有提示控件或按鈕能夠滿足要求。一個提示可以設(shè)置參數(shù)值并重新提示(通過自動提交),但是無法看 起來像文本。6.3適用范圍這種技術(shù)應(yīng)該適用于 Rep ortNet或IBM Cognos 8的任何版本。6.4未記錄和不受支持的功能正如下面詳細(xì)討論的,這個解決方案需要使用兩個在IBM Cognos 8中未記錄和不受支持的功能。因此,在以后的版本中對這兩個功能的支持可能會改變或完全取消,從而需要重寫這個解決方案。但是,這種風(fēng)險(xiǎn)很低,因?yàn)槟壳霸谶@些方面沒有修改計(jì)劃。6.
29、5選項(xiàng)卡式提示報(bào)表項(xiàng)目在我們的場景中,第一個選項(xiàng)卡讓用戶選擇Order year(s),第二個選項(xiàng)卡讓用戶選擇Product name(s),以便運(yùn)行一個非常簡單的列表報(bào)表。我們將從頭到尾介紹創(chuàng)建示例報(bào)表的整個過程。為方便起見,我們只使用兩個選項(xiàng)卡,每個選項(xiàng)卡上各有一個提示。6.5.1創(chuàng)建基本報(bào)表打開 Re port Studio 和 GO Sales and Retailers包。創(chuàng)建一個新的列表報(bào)表:Orders Product name OrdersRevenue OrdersOrder year*如圖所示:*圖5.創(chuàng)建基本報(bào)表Dotibl色 click to edit text.Ord
30、er year ProdxtRevweOrder year Revenue 創(chuàng)建兩個可選的詳細(xì)信息篩選:* Order year in ?p_OrderYear?* P roduct name in ?p_P roductName?這樣就行了。這就是將用來演示這種技術(shù)的基本報(bào)表。6.5.2創(chuàng)建基本提示頁面盡管創(chuàng)建選項(xiàng)卡式提示用戶界面并不難,但是過程很長。大多數(shù)時間花在格式化方面。實(shí)際功能花費(fèi)的時間很少。 首先我們需要一個提示頁面。在報(bào)表中添加一個提示頁面: 圖6.添加一個提示頁面Double cHck to edit tEXfcCan cell Hiish把一個一行兩列的表格拖到提示頁面體中,
31、如圖所示: 圖7.把一個一行兩列的表格拖到提示頁面體中Doubl click to edit text.Cancel Frish我們暫時不管這個表格,但是稍后要使用它。6.5.3創(chuàng)建選項(xiàng)卡體條件塊最終包含出現(xiàn)在每個選項(xiàng)卡上的提示。圖8.創(chuàng)建選項(xiàng)卡體我們首先創(chuàng)建基本的選項(xiàng)卡體結(jié)構(gòu)并使用一些文本項(xiàng),讓我們可以看出哪個選項(xiàng)卡是當(dāng)前的。 把一個Conditional Block對象拖到頁面體中: 圖9.把一個Conditional Block對象拖到頁面體中Double cfick to edit text.選擇條件塊對象然后選擇Block Variable屬性。創(chuàng)建一個Cancel FnehNew
32、String Variable,像這樣:Name: TabToShowValues: Tab2*變量名選擇好塊之后,把 Current Block屬性設(shè)置為Other。把一個文本項(xiàng)Tab 1拖到塊中,像這樣:Exp ression: P aramValue( pTabToShow)TabToShow、值Tab2和參數(shù)pTabToShow很重要,這個項(xiàng)目要多次引用它們。圖10.把一個文本項(xiàng)Tab 1 拖到塊中Double cMck to edit tExtTab 1Qncell Fhishi這個文本用于提醒我們哪個選項(xiàng)卡是當(dāng)前正在查看的。選擇塊,把 Current Block屬性設(shè)置為 Tab2
33、。Tab 1 文本項(xiàng)會從塊中消失。把文本項(xiàng)Tab 2拖到塊中,像這樣:圖11.把文本項(xiàng)Tab 2 拖到塊中Double click to edit text.Cancel Finish同樣,這個文本用于提醒我們哪個選項(xiàng)卡是當(dāng)前正在查看的。選擇塊,在 Other和Tab2之間來回變換 Current Block屬性值,應(yīng)該可以看到 Report Studio中的選項(xiàng)卡隨之切換。6.5.4創(chuàng)建選項(xiàng)卡正如前面所說的,我們要使用HTML項(xiàng)和一些未記錄和不受支持的功能實(shí)現(xiàn)選項(xiàng)卡。首先要做的是,使用 Report Viewer將參數(shù)值傳遞給服務(wù)器。作為表單變量傳遞參數(shù)值,表單變量的名稱是參數(shù)名(比如 pT
34、abToShow)前面加上 p_,比如 p_pTabToShow。這種參數(shù)傳遞機(jī)制是未記錄和不受支持的。請注意本文前面的說明。我們使用一個HTML對象創(chuàng)建這個表單變量。把一個HTML項(xiàng)目拖到Page Header中,像這樣: 圖12.把一個HTML項(xiàng)目拖到 Page Header中click to edit tmxbTab 1Cancel % Back Next Finssh這個項(xiàng)的位置無所謂,因?yàn)樗幌蛴脩麸@示。選擇HTML項(xiàng)并把HTML屬性設(shè)置為:vinput typ e=hidden name=p_ pTabToShow value=Tab1/ 這行HTML代碼創(chuàng)建表單變量 p_pTab
35、ToShow并將值設(shè)置為Tab1。這個表單變量讓服務(wù)器認(rèn)為報(bào)表中已經(jīng)定義了名為pTabToShow的參數(shù),所以服務(wù)器會保留它的值并在重新提示報(bào)表時把它傳遞回 Report Viewer?,F(xiàn)在,回到前面在該示例中添加的表格。盡管目前還看不出來,但是這個表格中的兩個單元格將變成用戶可以單擊的選項(xiàng)卡。在每個表格單元格中添加一個HTML項(xiàng),讓它們在單元格中居中:圖13.在每個表格單元格中添加一個HTML項(xiàng)叮才 Double d ick to edittext-T閒1選擇左邊的HTML項(xiàng)并把HTML屬性設(shè)置為:vbutton title=Show Tab 1onclick=document.formWa
36、r pRequest.elements p_p TabToShow.value= Tab1;Set Promp tControl(re promp t)Show Tab 1這段JavaScri pt創(chuàng)建一個按鈕:按鈕標(biāo)題(工具提示文本)-Show Tab 1操作:o 將表單變量p_pTabToShow設(shè)置為Tab1 o運(yùn)行函數(shù)reprompt按鈕標(biāo)簽-Show Tab 1*換句話說,當(dāng)用戶按這個按鈕時,它會設(shè)置表單變量并重新提示報(bào)表。 注意,reprompt函數(shù)是未記錄和不受支持的。請注意本文前面的說明。 選擇右邊的HTML項(xiàng)并把HTML屬性設(shè)置為:Show Tab 2運(yùn)行報(bào)表:圖15.運(yùn)行報(bào)
37、表Show Tab 1Show Tab 2TablCancelFinish可以通過單擊按鈕在選項(xiàng)卡之間切換,顯示相應(yīng)的文本。圖16.切換選項(xiàng)卡Show Tab 1Show Tab 2FintshCancel核心選項(xiàng)卡功能現(xiàn)在完成了。剩下的工作都是裝飾性的;這個用戶界面是有效的,但是看起來不像選項(xiàng)卡式用戶界面。另外,還 要把提示放到選項(xiàng)卡上。返回到 Re port Studio。6.5.5設(shè)置選項(xiàng)卡的樣式我們要用邊框、對齊和其他樣式改變HTML按鈕和塊的外觀,讓它們看起來像選項(xiàng)卡。首先,處理HTML按鈕。選擇父表格,在 Table Properties屬性中選擇 Fixed Size仍然選擇表格
38、,選擇 Size and Overflow屬性并刪除當(dāng)前的寬度設(shè)置。選擇每個表格單元格并把寬度都設(shè)置為100 pixels(P X)。在實(shí)際的報(bào)表中,必須調(diào)整寬度,讓寬度與每個選項(xiàng)卡中的文本匹配。請記住,為了讓選項(xiàng)卡更美觀,所有選項(xiàng)卡常常采用相同 的寬度?,F(xiàn)在,表格單元格和 HTML按鈕有點(diǎn)兒像選項(xiàng)卡了: 圖17.設(shè)置選項(xiàng)卡的樣式Double click to edlit text.Tab 1現(xiàn)在,需要重新設(shè)置 HTML按鈕的樣式,讓它們只顯示文本。 選擇HTML對象之一,會看到?jīng)]有樣式屬性:圖18.重新設(shè)置HTML按鈕的樣式iQConditionalRefxlerHTM Soura Vari
39、ableHTHL SourceSotrccTypcHXGeneralDescripbonMisceftanusNarw在IBM Cognos 8中,可以在報(bào)表中定義樣式并把它們應(yīng)用于報(bào)表對象。同樣,也可以把這些樣式應(yīng)用于6.5.6 IBM Cognos 8 按鈕樣式在IBM Cognos 8中,可以定義一個類,然后在HTML按鈕定義中引用它。使用 P age Explorer 打開 Classes把一個Class對象從工具箱拖到 Local Classes區(qū)域:選擇這個新的類對象并設(shè)置屬性:IE)!Text cbutton ttte-苫how Tab FonckkHTML對象。Name: HT
40、MLButtonsBorder: NoneBox Type: BlockBackground Color: White* Class or Selector: HB返回到提示頁面。Class/Selector屬性是在把樣式應(yīng)用于HTML項(xiàng)時使用的標(biāo)識符。選擇左邊Tab 1的HTML對象并把HTML屬性改為:vbutton title=Show Tab 1onclick=document.formWarpRequest.elementsp _p TabToShow.value= Tab1;Set Promp tControl(re promp t) class=HBShow Tab 1v/but
41、ton 選擇右邊Tab 2的HTML對象并把HTML屬性改為:vbutton title=Show Tab 2onclick=document.formWar pRequest.elements p_p TabToShow.value= Tab2;Set Promp tControl(re promp t) class=HBShow Tab Zv/button 6.5.7 Rep ortNet 按鈕樣式在Rep ortNet和IBM Cognos 8中都可以使用這種方法。我們使用HTML樣式屬性在HTML按鈕定義中直接應(yīng)用樣式,而不是引用在報(bào)表級定義的通用樣式定義。 選擇左邊的HTML對象并把
42、HTML屬性改為:vbutton title=Show Tab 1onclick=document.formWar pRequest.elements p_p TabToShow.value= Tab1;Set Promp tControl(re promp t)style=border-to p- style:none;border-left-style:none;border-nght-style:none; border- bottom-style:none;dis play:block;background-color:whiteShow Tab1v/button 選擇右邊的HTML對
43、象并把HTML屬性改為: vbutton title=Show Tab 2onclick=document.formWar pRequest.elements p_p TabToShow.value= Tab2; Set Promp tControl(re promp t)style=border-to p- style:none;border-left-style:none;border-right-style:none; border- bottom-style:none;dis pl ay:block;background-color:whiteShow Tab 2v/button 6.
44、5.8運(yùn)行報(bào)表運(yùn)行報(bào)表。刪除按鈕的按鈕式外觀,只留下文本。圖19.運(yùn)行報(bào)表Show Tab 2Show Tab 1Tab 16.5.9顯示活躍的和不活躍的選項(xiàng)卡我們現(xiàn)在需要通過設(shè)置選項(xiàng)卡的樣式表明哪個選項(xiàng)卡是活躍的?;钴S的選項(xiàng)卡將采用黑色的邊框和文本。不活躍的選項(xiàng)卡將采用 灰色的邊框和文本。選擇左邊的表格單元格。將 Style Variable 設(shè)置為 TabToShow。使用 Variable Explorer 選擇 TabToShow,再選擇 Other:圖20.-館 廳 P3a9仍然選擇左邊的表格單元格,將左邊、上邊和右邊的Border 設(shè)置為 Black、Solid Line、1.5
45、point (pt):圖21.Border設(shè)置IVaruWes(Mo vsriaUe il!屜T斯OSI伽 曰 Tab2 arai圖22. Tab 1選項(xiàng)卡Tsbi 1使用 Variable Explorer 選擇 TabToShow,再選擇 Tab2:仍然選擇左邊的表格單元格,將左邊、上邊和右邊的Border設(shè)置為Silver、Solid line、1.5 point (pt): 圖 23. Tab2 Border 設(shè)置nj圖24. Tab 2選項(xiàng)卡-lI |lTab 1運(yùn)行報(bào)表: 圖25.運(yùn)行報(bào)表Tab 1I Show Tab 1Tab 1單擊Show Tab 2,讓Tab 1變成非當(dāng)前的
46、:圖26.運(yùn)行報(bào)表Tab 2Show Tab 1| Show Tab 2Tab 2對Tab 2 (右邊的表格單元格)重復(fù)相似的步驟。返回到 Re port Studio。選擇右邊的表格單元格。將 Style Variable 設(shè)置為 TabToShow。使用 Variable Explorer 選擇 TabToShow,再選擇 Other:圖 27.將 Style Variable 設(shè)置為 TabToShow仍然選擇右邊的表格單元格,將左邊、上邊和右邊的Border 設(shè)置為 Silver、Solid Line、1.5 point (pt):圖28. Border設(shè)置使用 Variable Ex
47、plorer 選擇 TabToShow,再選擇 Tab2:仍然選擇右邊的表格單元格,將左邊、上邊和右邊的Border設(shè)置為Black、Solid Line、1.5 point (pt): 圖 29. Tab2 Border 設(shè)置al運(yùn)行報(bào)表: 圖30.運(yùn)行報(bào)表Show Tab 1 I Show Tab 2 Tab 1單擊 Show Tab 2:圖31.運(yùn)行報(bào)表Show Tab 2Show fab 2|Show Tab 1Tab 2兩個表格單元格之間的邊框是灰色,但是我們在右邊的表格單元格上已經(jīng)把它設(shè)置為黑色了。因此它既有灰色也有黑色。每個表 格單元格實(shí)際上有自己的邊框,但是在默認(rèn)情況下它們是重疊的。也就是說,不會看到下面這樣并列的邊框:圖32 .不會看到下面這樣并列的邊框I Show Tab 1Tab 1邊框會重疊在一起。當(dāng)邊框重疊時,按一定的規(guī)則決定(優(yōu)先)顯示哪個邊框。在這里,顯示左邊的單元格邊框。 當(dāng)右邊的單元格活躍時,我們需要調(diào)整邊框,讓左邊的單元格沒有邊框。返回到 Re port Studio。選擇左
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年競業(yè)協(xié)議普通員工離職后業(yè)務(wù)競爭限制合同
- 二零二五年度咖啡店加盟店財(cái)務(wù)審計(jì)與監(jiān)督協(xié)議
- 二零二五年度勞動人事代理與員工福利保障合同
- 二零二五年度旅游活動安全免責(zé)合同
- 二零二五年度房屋抵押權(quán)解除合同
- 余姚中學(xué)2024學(xué)年第二學(xué)期質(zhì)量檢測高二英語試題分析
- 關(guān)鍵考察點(diǎn):專升本思政試題及答案
- 2024-2025學(xué)年高二下學(xué)期《雙休政策下AI如何助力高中生高效學(xué)習(xí)?》主題班會課件
- 2025年度水利工程監(jiān)理工程師合同管理與生態(tài)保護(hù)
- 二零二五年度個人免責(zé)的電子商務(wù)合作協(xié)議書
- 招聘與錄用(第3版)課件 第8章 錄用與招聘評估
- 湖南中考英語2022-2024真題匯編-教師版-07 語法填空
- 固定橋修復(fù)后可能出現(xiàn)的問題及處理
- 2023年鄭州黃河文化旅游發(fā)展有限公司招聘考試真題
- 中國出口新動能和企業(yè)外貿(mào)信心指數(shù)報(bào)告 202411
- 城鎮(zhèn)燃?xì)饨?jīng)營安全重大隱患判定及燃?xì)獍踩芾韺n}培訓(xùn)
- 神經(jīng)內(nèi)科醫(yī)生進(jìn)修匯報(bào)課件
- 充電樁巡查記錄表
- 2024年浙江省中考?xì)v史真題(解析版)
- 2024年江蘇省南京外國語丘班、南京一中數(shù)理人才班特長生招生數(shù)學(xué)試卷
- 2024年稅務(wù)系統(tǒng)職業(yè)技能競賽試題庫-非稅收入管理
評論
0/150
提交評論