版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#prompt ( pOrderNumber ,integer )#IBM Cognos B最佳實(shí)踐:報(bào)表設(shè)計(jì)高級(jí)提示和提示性能調(diào)優(yōu)1簡(jiǎn)介1.1目的本文檔旨在向報(bào)表創(chuàng)建者展示如何處理第一個(gè)提示頁(yè)面性能低下的問(wèn)題。1.2適用范圍這里的信息只適用于 IBM Cognos 8.2 B。2第一個(gè)提示頁(yè)面的性能當(dāng)用戶運(yùn)行包含多個(gè)復(fù)雜查詢的報(bào)表時(shí),常常需要等待很長(zhǎng)時(shí)間才會(huì)看到第一個(gè)提示頁(yè)面出現(xiàn)。例如,在一個(gè)客戶場(chǎng)景中,報(bào)表 用了 40秒才顯示出第一個(gè)提示頁(yè)面??梢酝ㄟ^(guò)兩方面的努力改進(jìn)第一個(gè)提示頁(yè)面的性能:1) 減少提示調(diào)節(jié)(prompt reconciliation )的時(shí)間2) 減少為提示控件獲取數(shù)據(jù)的
2、時(shí)間 3提示調(diào)節(jié)3.1什么是提示調(diào)節(jié)?提示調(diào)節(jié)確保參數(shù)定義與參數(shù)的用法匹配。在篩選和計(jì)算中定義參數(shù)。在提示中使用定義好的參數(shù)。 參數(shù)定義包含幾個(gè)關(guān)鍵項(xiàng):基數(shù)-可以提供給參數(shù)的輸入值的數(shù)量。離散性-決定輸入值是定義單一值,還是定義一個(gè)值范圍。可選性-決定參數(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á)式 請(qǐng)考慮可選的篩選:Order numbe
3、r = ?pO rderNumber?通過(guò)分析這個(gè)篩選,可以判斷出參數(shù)POrderNumber的一些性質(zhì):基數(shù):?jiǎn)我恢档忍?hào)表明只能使用單一值。使用多個(gè)值需要適當(dāng)?shù)牟僮鞣热纭皀 ”:Order number in ?pO rderNumber?離散性:簡(jiǎn)單值等號(hào)表明了這一點(diǎn)。值的范圍需要適當(dāng)?shù)牟僮鞣?,比如iLrange ”:Order number in_range ?pO rderNumber?o如果一個(gè)參數(shù)在多個(gè)上下文中使用,那么對(duì)于是范圍值的參數(shù),所有引用都必須是范圍值。可選性:可選的*數(shù)據(jù)類型: 這個(gè)參數(shù)是數(shù)字,因?yàn)?Order number數(shù)據(jù)項(xiàng)是數(shù)字?,F(xiàn)在,把參數(shù)的特性應(yīng)用于引用
4、它的提示。這意味著,提示控件會(huì)體現(xiàn)參數(shù)的一部分特性,從而讓提示控件與參數(shù)定義保持兼 容。如果在創(chuàng)建的提示頁(yè)面中引用參數(shù),會(huì)在運(yùn)行時(shí)修改提示定義,以便與參數(shù)的基數(shù)、可選性和離散性匹配。數(shù)據(jù)類型不匹配 可能會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。如果沒(méi)有創(chuàng)建的提示頁(yè)面,那么這些特性應(yīng)用于生成的提示頁(yè)面上的提示。3.1.2數(shù)據(jù)項(xiàng)表達(dá)式與通過(guò)宏表達(dá)式定義的參數(shù)不同,在數(shù)據(jù)項(xiàng)表達(dá)式中使用的參數(shù)是必需的。3.1.3宏表達(dá)式在宏表達(dá)式中定義的參數(shù) 1可以是可選的或必需的,可以是單一值或多值。請(qǐng)考慮宏表達(dá)式:這個(gè)篩選定義為可選的,所以參數(shù)也是可選的。參數(shù)也可以是必需的。如果一個(gè)參數(shù)在多個(gè)上下文中使用,那么對(duì)于可選的參數(shù),所有引用都
5、必須是可選的。 Numeric基數(shù):?jiǎn)我恢祊rompt()宏函數(shù)只接受單一輸入值??梢杂胮rompt()定義多個(gè)值:#promptmany ( pOrderNumber , integer )#簡(jiǎn)單值提示宏總是簡(jiǎn)單值,而不是范圍。必需的沒(méi)有默認(rèn)值(這個(gè)宏函數(shù)的第三個(gè)可選參數(shù))表明了這一點(diǎn)。 包含可選參數(shù)的示例如下:#prompt ( pOrderNumber , integer ,離散性:*可選性:5 )#3.2提示調(diào)節(jié)如何影響性能?為了執(zhí)行提示調(diào)節(jié),IBM Cognos 8要檢查查詢,判斷有哪些參數(shù)及其特性。查詢?cè)酱?、越?fù)雜,這個(gè)過(guò)程花費(fèi)的時(shí)間越長(zhǎng)。在IBM Cognos 8.1中,一個(gè)包含
6、200多個(gè)查詢的客戶報(bào)表需要超過(guò) 40秒才能顯示出第一個(gè)提示頁(yè)面。大多數(shù)時(shí)間花費(fèi)在提示調(diào)節(jié) 方面。3.3在Cognos 8.2中如何改進(jìn)提示調(diào)節(jié)? 在IBM Cognos 8.2中通過(guò)三種方式改進(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é)過(guò)程已經(jīng)得到優(yōu)化,大大提高了速度。與IBM Cognos 8.1相比,這個(gè)過(guò)程花費(fèi)的時(shí)間減少了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為整個(gè)系統(tǒng)和具體報(bào)表的提示調(diào)節(jié)調(diào)優(yōu)提供了三個(gè)相互關(guān)聯(lián)的選項(xiàng)。第一個(gè)選項(xiàng)是一個(gè)針對(duì)整個(gè)報(bào)表服務(wù)器啟用的報(bào)表服務(wù)器高級(jí)屬性:RSV P.PROMP T.RECONCILIATIO這個(gè)屬性有幾個(gè)值:COMP LETE在顯示第一個(gè)提示頁(yè)面之前,調(diào)節(jié)所有查詢。這是默認(rèn)設(shè)置,用來(lái)確保與以前版本的兼容性。CHUNKED-分批調(diào)節(jié)所有查詢,直到調(diào)節(jié)了第一個(gè)提示頁(yè)面所需的參數(shù)為止。以不固定的次序處理查詢??梢杂酶呒?jí)服務(wù)器屬性RSV
8、P.PROMP T.RECONCILIATION.CHUNKS修改 CHUNK大 小。默認(rèn)的 CHUNK 大小是 5 個(gè)查詢。GROUPED-按組調(diào)節(jié)查詢,直到調(diào)節(jié)了第一個(gè)提示頁(yè)面所需的參數(shù)為止。這些組如下:*篩選的報(bào)表查詢 篩選的提示查詢 未篩選的報(bào)表查詢 未篩選的提示查詢*按這些組的次序處理查詢,直到調(diào)節(jié)了第一個(gè)提示頁(yè)面中引用的所有參數(shù)為止。常常只需處理第一個(gè)或前兩個(gè)組。但是,在某些 情況下,需要處理所有查詢。例如,如果在提示查詢中的計(jì)算查詢項(xiàng)中引用參數(shù),就會(huì)發(fā)生這種情況。報(bào)表服務(wù)器調(diào)節(jié)第一個(gè)提 示頁(yè)面的參數(shù)之后,向用戶顯示這個(gè)頁(yè)面。如果后續(xù)提示頁(yè)面引用在已經(jīng)處理的查詢中沒(méi)有的參數(shù),在顯示
9、這些提示頁(yè)面之前, 報(bào)表服務(wù)器可能需要調(diào)節(jié)更多查詢。CHUNKED GROUPED分批調(diào)節(jié)查詢組中的查詢,直到調(diào)節(jié)了第一個(gè)提示頁(yè)面所需的參數(shù)為止。我們的客戶場(chǎng)景只包含一個(gè)篩選的查詢,但是假設(shè)報(bào)表中的所有200個(gè)查詢都使用相同的參數(shù)進(jìn)行篩選。GROU PED會(huì)同時(shí)調(diào)節(jié)這200個(gè)查詢,因?yàn)樗胁樵兌紝儆诤Y選的報(bào)表查詢組。CHUNKED每次調(diào)節(jié)x個(gè)查詢,x是CHUNKED大小(默認(rèn)值為5)。因此對(duì)于CHUNKED GROUPED將調(diào)節(jié)5個(gè)查詢。如果找到了第一個(gè)提示頁(yè)面所需的參數(shù),就顯示頁(yè)面。如果沒(méi)有找到,就處理后5個(gè)查詢,直到找到參數(shù)為止。以我們的客戶報(bào)表為例,設(shè)置RSV P.PROMP T.REC
10、ONCILIATION = GROUP會(huì)迫使提示調(diào)節(jié)首先處理包含篩選的查詢(我們只有一個(gè)這樣的查詢)。這導(dǎo)致客戶示例報(bào)表的提示調(diào)節(jié)在IBM Cognos 8.2中只需花費(fèi)不到1秒,與IBM Cognos 8.1中的40多秒相比性能提高了 98%。只需設(shè)置一個(gè)高級(jí)服務(wù)器屬性,就實(shí)現(xiàn)了98%的性能改進(jìn)。不需要采取其他措施。坦白地說(shuō),這個(gè)示例不太典型,因?yàn)楹Y選的查詢和非篩選的查詢的比例高于一般水平。但是,這個(gè)示例說(shuō)明GROU PED調(diào)節(jié)選項(xiàng)的優(yōu)點(diǎn)是只需要處理所有查詢中的一部分。關(guān)于如何處理大量的篩選查詢,請(qǐng)參見(jiàn)用于提示調(diào)節(jié)調(diào)優(yōu)的查詢屬性 ”。3.5.1最佳默認(rèn)設(shè)置是什么?如果使用COMPLETE之外
11、的其他設(shè)置,可能會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤,因?yàn)橄嗤膮?shù)可能在同一報(bào)表中以不同方式定義兩次或更多 次。假設(shè)報(bào)表中有一個(gè)可選的篩選(比如X in ?P 1?)和一個(gè)計(jì)算 Y + ?P 12篩選把P1定義為可選的和多值的。計(jì)算把P1定義為必需的和單值的。如果使用COMPLETE查詢調(diào)節(jié),就會(huì)處理所有查詢,而且使用限制性最強(qiáng)的定義修改提示,這會(huì)產(chǎn)生必需的單值提示。如果使用GROUPED就只處理篩選的查詢,這允許使用可選的多值提示。如果用戶跳過(guò)這個(gè)提示或者選擇多個(gè)值,那么當(dāng)處理計(jì) 算時(shí)就會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。說(shuō)到這里要補(bǔ)充一點(diǎn),在使用高級(jí)調(diào)節(jié)屬性時(shí),正確使用參數(shù)并解決這些不匹配的參數(shù)定義應(yīng)該是創(chuàng)建者的責(zé)任。在使用
12、CHUNKED GROUPE時(shí),還可能有兩個(gè)或更多篩選以不同方式定義同一個(gè)參數(shù)。同樣,這也是在創(chuàng)建報(bào)表時(shí)計(jì)劃和實(shí)現(xiàn)不 完善的表現(xiàn)。出于性能考慮,CHUNKED GROU PE是推薦的設(shè)置,因?yàn)樗试S只處理部分查詢組。但是,應(yīng)該進(jìn)行適當(dāng)?shù)膱?bào)表測(cè)試,以確保不會(huì) 出現(xiàn)由于報(bào)表創(chuàng)建者使用參數(shù)的方式不一致所導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤。默認(rèn)的CHUNK大小5對(duì)于大多數(shù)情況已足夠。3.6用于提示調(diào)節(jié)調(diào)優(yōu)的查詢屬性Report對(duì)于某些報(bào)表,僅僅設(shè)置高級(jí)報(bào)表服務(wù)器屬性可能無(wú)法實(shí)現(xiàn)良好的性能,還需要手動(dòng)調(diào)優(yōu)。報(bào)表創(chuàng)建者可以使用新的Studio查詢屬性Use for Parameter Info決定提示調(diào)節(jié)的執(zhí)行方式。這個(gè)新
13、屬性只能在高級(jí)報(bào)表服務(wù)器屬性RSVP.PROMPreconciliation置為 GROUPED或 CHUNKED GROUPE時(shí)使用。Use for P arameter Info = True 查詢 篩選的報(bào)表查詢篩選的提示查詢 未篩選的報(bào)表查詢 未篩選的提示查詢這個(gè)屬性實(shí)際上創(chuàng)建一個(gè)新的查詢處理組,系統(tǒng)在處理篩選的報(bào)表查詢之前處理這個(gè)組。新的處理次序是:*如果在第一個(gè)組中找到了所需的參數(shù),就不再處理其他查詢。這個(gè)屬性在兩個(gè)場(chǎng)景中很有用。200個(gè)查詢來(lái)調(diào)節(jié)Use for3.6.1在多個(gè)查詢篩選中使用相同的參數(shù) 仍然以包含200個(gè)查詢的示例報(bào)表為例,假設(shè)所有200個(gè)查詢中的篩選都引用相同的參
14、數(shù)。以前必須處理所有參數(shù)。實(shí)際上,只需處理其中任意一個(gè)查詢,就可以收集到所需的信息。報(bào)表創(chuàng)建者可以選擇任何查詢,并設(shè)置查詢屬性 Parameter Info = True。系統(tǒng)只處理這個(gè)查詢,就會(huì)找到所需的參數(shù)并顯示第一個(gè)提示頁(yè)面,不必處理其他查詢。3.6.2在每個(gè)查詢篩選中使用不同的參數(shù) 現(xiàn)在,考慮一個(gè)完全不一樣(有點(diǎn)兒不真實(shí))的用例。我們有200個(gè)查詢,每個(gè)查詢都引用一個(gè)不同的參數(shù),在第一個(gè)提示頁(yè)面中引用所有200個(gè)參數(shù)。在這種情況下,必須處理所有查詢,這會(huì)導(dǎo)致性能降低(回到5秒水平)。有一個(gè)非常聰明的辦法:創(chuàng)建者可以創(chuàng)建一個(gè)定義所有200個(gè)參數(shù)的查詢。不創(chuàng)建任何引用這個(gè)新查詢的布局(即,
15、沒(méi)有列表、交叉表或圖表使用這個(gè)查詢)。只在這個(gè)查詢上設(shè)置查詢屬性Use for P arameter Info = True?,F(xiàn)在,在運(yùn)行報(bào)表時(shí),只處理這一個(gè)查詢。因?yàn)樵诓季种胁灰眠@個(gè)查詢,它不會(huì)實(shí)際執(zhí)行。這樣就解決了第一個(gè)提示頁(yè)面的性能問(wèn)題,而且不會(huì)有額外的開銷。包含200個(gè)查詢而且每個(gè)查詢使用不同的參數(shù)這樣的示例有點(diǎn)兒極端,但是如果處理給定的查詢或查詢集造成了性能問(wè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ù)性能問(wèn)題。3.6.3提供不利提示 要確保您選擇的查詢提供所需的所有參數(shù)。如果在沒(méi)有定義所有參數(shù)的查詢集上設(shè)置Use For Parameter Info 查詢提示(hint),會(huì)對(duì)性能產(chǎn)生消極影響,因?yàn)榈谝粋€(gè)請(qǐng)求沒(méi)有調(diào)節(jié)所有參數(shù),還需要通過(guò)另一個(gè)請(qǐng)求獲得其他參數(shù)的參數(shù)特性。3.7 SAP考慮事項(xiàng)在有非層次化數(shù)據(jù)源變量的SAP環(huán)境中,變量數(shù)量大而且這些變量具有許多可能的值,這會(huì)顯著影響性能。建議不要在這些環(huán)境中使用高級(jí)服務(wù)器屬性,但是可以使用Use For parameter Info 查詢提示改進(jìn)性能。4提示查詢性能提示查詢用于填充提示控件。在運(yùn)行完提示查詢之
17、前,無(wú)法顯示提示頁(yè)面。在默認(rèn)情況下,這些查詢?cè)诿看蜗蛴脩麸@示提示頁(yè)面 時(shí)運(yùn)行一次。在改進(jìn)提示查詢性能時(shí),要關(guān)注三個(gè)方面: 查詢的數(shù)量 避免重復(fù)運(yùn)行提示查詢 并行地運(yùn)行提示查詢4.1 查詢的數(shù)量 查詢數(shù)量越大,處理提示頁(yè)面花費(fèi)的時(shí)間越長(zhǎng)。盡管下面討論的機(jī)制可以減少所需的時(shí)間,但是有時(shí)候第一個(gè)提示頁(yè)面包含的提 示查詢太多,必須處理它們才能顯示提示頁(yè)面??梢园烟崾痉指顬閮蓚€(gè)或更多頁(yè)面。這樣每個(gè)提示頁(yè)面包含的查詢就比較少了。 可以使用選項(xiàng)卡式的提示頁(yè)面。系統(tǒng)只運(yùn)行實(shí)際向用戶顯示的提示控件所需的查詢,不運(yùn)行不活躍的選項(xiàng)卡的提示查詢。附錄 講解如何創(chuàng)建選項(xiàng)卡式提示界面。可以使用隱藏在條件塊中的提示,這些提
18、示只在用戶已經(jīng)響應(yīng)了一些提示并重新提示報(bào)表時(shí)顯示。同樣,因?yàn)橄到y(tǒng)只運(yùn)行實(shí)際向 用戶顯示的提示控件所需的查詢,不運(yùn)行隱藏塊中的提示查詢。4.2 適當(dāng)?shù)奶崾究丶?一些提示控件不適合容納大量數(shù)據(jù)。例如,包含100,000 個(gè)條目的值提示(選擇列表)性能會(huì)很差,而且使用很不方便。對(duì)于這么大量的數(shù)據(jù),更合適的控件是Select & search 提示、 Cascading 提示或 Tree 提示,因?yàn)樗鼈冊(cè)谧畛躏@示時(shí)并不裝載整個(gè)數(shù)據(jù)集。注意,如果創(chuàng)建者非要使用包含大量數(shù)據(jù)的提示,那么在默認(rèn)情況下數(shù)據(jù)會(huì)在 5000 行處截?cái)?,而且系統(tǒng)并不給出警告??梢允褂?提示控件的Rows Per Page屬性顯示更大
19、的數(shù)據(jù)集。4.3 緩存提示查詢?cè)?IBM Cognos 8.1 中,可以緩存提示查詢。如果提示中的值不經(jīng)常變動(dòng)(比如每天一次而不是隨時(shí)),而且提示并不依靠另一個(gè) 提示的值篩選提示查詢,就可以使用這種技術(shù)。例如,可以緩存父級(jí)聯(lián)提示的值,但是不能緩存子(或?qū)O)提示,因?yàn)檫@些后續(xù) 提示依靠父提示的值執(zhí)行查詢。使用作業(yè)執(zhí)行提示查詢并緩存報(bào)表的值。用適當(dāng)?shù)恼{(diào)度計(jì)劃(比如每天或每周)創(chuàng)建作業(yè),從而反映提示值的變動(dòng)頻率。在作業(yè)中添加需要刷新提示查詢的報(bào)表之后,把Default Run選項(xiàng)設(shè)置為 Run the report to Refresh the Report Cache (也可以為每個(gè)報(bào)表步驟設(shè)置這
20、個(gè)選項(xiàng))。當(dāng)作業(yè)運(yùn)行時(shí),它只執(zhí)行提示查詢并把結(jié)果緩存在 Content Store 中。如果在多個(gè)位置有提示,那么在作業(yè)步驟中設(shè)置這些位置, 就會(huì)緩存所有位置的提示值。當(dāng)用戶運(yùn)行報(bào)表時(shí),獲取緩存的查詢值;這一般會(huì)提高性能。 注意,無(wú)論是否考慮性能因素,這也是減少對(duì)數(shù)據(jù)庫(kù)的查詢數(shù)量的好方法,因?yàn)樵谟脩裘看握?qǐng)求運(yùn)行報(bào)表時(shí)不再需要執(zhí)行提示查 詢了。4.4 并行地運(yùn)行提示查詢 如果提示值是高度動(dòng)態(tài)的,緩存不是合適的選項(xiàng),那么可以同時(shí)執(zhí)行多個(gè)提示查詢。在默認(rèn)情況下,單一報(bào)表中的所有查詢一個(gè)接一個(gè)地運(yùn)行??梢酝瑫r(shí)運(yùn)行提示查詢或數(shù)據(jù)查詢。報(bào)表服務(wù)器使用 helper 的概念管理可以在報(bào)表服務(wù)器中同時(shí)執(zhí)行的查
21、詢數(shù)量。例如,把 helper 的數(shù)量設(shè)置為 10 就意味著整個(gè)報(bào)表 服務(wù)器實(shí)例可以同時(shí)執(zhí)行另外 10 個(gè)查詢。報(bào)表服務(wù)器高級(jí)屬性 RSV P.CONCURRENTQUERY.NUMHEL PERS PERP ROC于設(shè)置服務(wù)器中可用的 hel per數(shù)量。默認(rèn)值是零。如果 不設(shè)置這個(gè)屬性,就無(wú)法同時(shí)運(yùn)行查詢。還必須使用報(bào)表服務(wù)器高級(jí)屬性RSV P.CONCURRENTQUERY.MAXNUMHEL PERS PERREP置每個(gè)報(bào)表可以使用的 hel per數(shù)量。默認(rèn)值是 1,即只允許每個(gè)報(bào)表每次執(zhí)行一個(gè)查詢;必須把它至少設(shè)置為2,才能允許運(yùn)行并行查詢。設(shè)置這兩個(gè)選項(xiàng)之后,在默認(rèn)情況下只對(duì)批執(zhí)
22、行運(yùn)行并行查詢。這是因?yàn)樵诮换ナ綀?zhí)行時(shí),這可能會(huì)導(dǎo)致運(yùn)行查詢,但是用戶根 本不看它的結(jié)果,因此不必要地消耗了資源。假設(shè)一個(gè)報(bào)表有兩個(gè)頁(yè)面,每個(gè)頁(yè)面有一個(gè)列表。用戶運(yùn)行這個(gè)報(bào)表;啟用并行查 詢,讓這兩個(gè)列表查詢同時(shí)運(yùn)行。用戶看了第一個(gè)頁(yè)面/ 列表,然后關(guān)閉瀏覽器。第二個(gè)查詢已經(jīng)并行地運(yùn)行了,但是未被使用,這浪費(fèi)了資源。稍后討論如何更好地處理這種情況。RSV P.CONCURRENTQUERY.ENABLEDFORINTERACTIVEOU設(shè)置為要想為交互式執(zhí)行啟用并行查詢,需要把報(bào)表服務(wù)器高級(jí)屬性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è)置這個(gè)屬性允許它們并行地運(yùn)行,這常常會(huì)提高性能。5結(jié)束語(yǔ)IBM Cognos 8.2顯著改進(jìn)了第一個(gè)提示頁(yè)面的基本性能,即使不進(jìn)行定制配置,性能也很好。 還可以通過(guò)以下措施進(jìn)一步提高提示性能:提示調(diào)節(jié)明智的提示頁(yè)面設(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)表測(cè)試)。6附錄A -選項(xiàng)卡式提示頁(yè)面注意:這份資料最初是一份單獨(dú)的P roven P ract
25、ices文檔。這里的內(nèi)容與原文檔中相同。6.1更快的選項(xiàng)卡式提示頁(yè)面 這里的場(chǎng)景是,客戶希望向最終用戶提供報(bào)表,在提示頁(yè)面中使用選項(xiàng)卡式用戶界面而不是一系列提示頁(yè)面。最常用的提示出現(xiàn) 在第一個(gè)選項(xiàng)卡中,其他選項(xiàng)卡顯示不太常用的提示。圖2.選項(xiàng)卡式提示頁(yè)面E I我們見(jiàn)過(guò)的一些應(yīng)用程序示例有多達(dá)60個(gè)提示,它們分布在 6到8個(gè)選項(xiàng)卡上。有兩個(gè)問(wèn)題會(huì)影響這些報(bào)表的性能。首先,提示數(shù)量大意味著Cognos 8在運(yùn)行報(bào)表之前必須分析許多查詢。一般情況下,這意味著每個(gè)提示有一個(gè)查詢,還要加上報(bào)表查詢本 身。這個(gè)問(wèn)題只能通過(guò)減少報(bào)表中使用的查詢數(shù)量來(lái)解決,這超出了本文的范圍。第二,原來(lái)使用的HTMLJava
26、Scri pt技術(shù)的性質(zhì)決定了它們的性能非常差。生成選項(xiàng)卡的標(biāo)準(zhǔn)HTMLJavaScri pt技術(shù)允許用戶在不訪問(wèn)服務(wù)器的情況下切換選項(xiàng)卡。這意味著必須在顯示第一個(gè)選項(xiàng)卡之前填充所有提示(多達(dá) 60個(gè))。因?yàn)樵谀J(rèn)情況下查詢是串行運(yùn)行的,需要的提示查詢?cè)蕉?,用戶等待的時(shí)間就越長(zhǎng)。6.2解決方案概述這個(gè)解決方案使用條件塊顯示提示。選項(xiàng)卡本身仍然是用HTML和JavaScri pt創(chuàng)建的。使用條件塊的優(yōu)點(diǎn)是,系統(tǒng)知道隱藏的塊中的提示是不可見(jiàn)的,因此不運(yùn)行填充它們所需的查詢。如果用戶切換選項(xiàng)卡,提示變得可見(jiàn)并運(yùn)行相關(guān)聯(lián)的查詢。缺點(diǎn)是切換選 項(xiàng)卡需要向服務(wù)器發(fā)出請(qǐng)求。實(shí)現(xiàn)這種技術(shù)的提示頁(yè)面使用條件塊決
27、定顯示哪些提示。請(qǐng)想像一系列重疊的矩形,在任何時(shí)候只顯示其中的一個(gè)。這些塊在任何時(shí)候只有其中的一個(gè)是可見(jiàn)的,但是所有選項(xiàng)卡都是一直可見(jiàn)的。 看起來(lái)像在其他選項(xiàng)卡前面。非當(dāng)前的選項(xiàng)卡是灰色的,讓它們不太突出。當(dāng)前選項(xiàng)卡的邊框和文本顏色設(shè)置為黑色,讓它從某種程度上來(lái)說(shuō),編寫報(bào)表相當(dāng)簡(jiǎn)單。我們將創(chuàng)建一個(gè)條件塊以及與選項(xiàng)卡數(shù)量相同的塊一一在以上示例中是4個(gè)。然后,以表格單元格的形式創(chuàng)建基本選項(xiàng)卡結(jié)構(gòu)(矩形),根據(jù)需要設(shè)置邊框。用HTML和一些簡(jiǎn)單的JavaScript創(chuàng)建選項(xiàng)卡中顯示的文本。當(dāng)用戶單擊選項(xiàng)卡(實(shí)際上是單擊選項(xiàng)卡中的文本)時(shí),顯示相關(guān)聯(lián)的條件塊,修改選項(xiàng)卡邊框和文本顏色,顯示相關(guān)聯(lián)的塊。
28、 在后臺(tái),通過(guò)設(shè)置一個(gè)參數(shù)值指定顯示哪個(gè)選項(xiàng)卡,然后重新提示報(bào)表。在理想情況下,我們使用提示控件或提示按鈕設(shè)置參數(shù) 值并重新提示。但是,沒(méi)有提示控件或按鈕能夠滿足要求。一個(gè)提示可以設(shè)置參數(shù)值并重新提示(通過(guò)自動(dòng)提交),但是無(wú)法看 起來(lái)像文本。6.3適用范圍這種技術(shù)應(yīng)該適用于 Rep ortNet或IBM Cognos 8的任何版本。6.4未記錄和不受支持的功能正如下面詳細(xì)討論的,這個(gè)解決方案需要使用兩個(gè)在IBM Cognos 8中未記錄和不受支持的功能。因此,在以后的版本中對(duì)這兩個(gè)功能的支持可能會(huì)改變或完全取消,從而需要重寫這個(gè)解決方案。但是,這種風(fēng)險(xiǎn)很低,因?yàn)槟壳霸谶@些方面沒(méi)有修改計(jì)劃。6.
29、5選項(xiàng)卡式提示報(bào)表項(xiàng)目在我們的場(chǎng)景中,第一個(gè)選項(xiàng)卡讓用戶選擇Order year(s),第二個(gè)選項(xiàng)卡讓用戶選擇Product name(s),以便運(yùn)行一個(gè)非常簡(jiǎn)單的列表報(bào)表。我們將從頭到尾介紹創(chuàng)建示例報(bào)表的整個(gè)過(guò)程。為方便起見(jiàn),我們只使用兩個(gè)選項(xiàng)卡,每個(gè)選項(xiàng)卡上各有一個(gè)提示。6.5.1創(chuàng)建基本報(bào)表打開 Re port Studio 和 GO Sales and Retailers包。創(chuàng)建一個(gè)新的列表報(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)建兩個(gè)可選的詳細(xì)信息篩選:* Order year in ?p_OrderYear?* P roduct name in ?p_P roductName?這樣就行了。這就是將用來(lái)演示這種技術(shù)的基本報(bào)表。6.5.2創(chuàng)建基本提示頁(yè)面盡管創(chuàng)建選項(xiàng)卡式提示用戶界面并不難,但是過(guò)程很長(zhǎng)。大多數(shù)時(shí)間花在格式化方面。實(shí)際功能花費(fèi)的時(shí)間很少。 首先我們需要一個(gè)提示頁(yè)面。在報(bào)表中添加一個(gè)提示頁(yè)面: 圖6.添加一個(gè)提示頁(yè)面Double cHck to edit tEXfcCan cell Hiish把一個(gè)一行兩列的表格拖到提示頁(yè)面體中,
31、如圖所示: 圖7.把一個(gè)一行兩列的表格拖到提示頁(yè)面體中Doubl click to edit text.Cancel Frish我們暫時(shí)不管這個(gè)表格,但是稍后要使用它。6.5.3創(chuàng)建選項(xiàng)卡體條件塊最終包含出現(xiàn)在每個(gè)選項(xiàng)卡上的提示。圖8.創(chuàng)建選項(xiàng)卡體我們首先創(chuàng)建基本的選項(xiàng)卡體結(jié)構(gòu)并使用一些文本項(xiàng),讓我們可以看出哪個(gè)選項(xiàng)卡是當(dāng)前的。 把一個(gè)Conditional Block對(duì)象拖到頁(yè)面體中: 圖9.把一個(gè)Conditional Block對(duì)象拖到頁(yè)面體中Double cfick to edit text.選擇條件塊對(duì)象然后選擇Block Variable屬性。創(chuàng)建一個(gè)Cancel FnehNew
32、String Variable,像這樣:Name: TabToShowValues: Tab2*變量名選擇好塊之后,把 Current Block屬性設(shè)置為Other。把一個(gè)文本項(xiàng)Tab 1拖到塊中,像這樣:Exp ression: P aramValue( pTabToShow)TabToShow、值Tab2和參數(shù)pTabToShow很重要,這個(gè)項(xiàng)目要多次引用它們。圖10.把一個(gè)文本項(xiàng)Tab 1 拖到塊中Double cMck to edit tExtTab 1Qncell Fhishi這個(gè)文本用于提醒我們哪個(gè)選項(xiàng)卡是當(dāng)前正在查看的。選擇塊,把 Current Block屬性設(shè)置為 Tab2
33、。Tab 1 文本項(xiàng)會(huì)從塊中消失。把文本項(xiàng)Tab 2拖到塊中,像這樣:圖11.把文本項(xiàng)Tab 2 拖到塊中Double click to edit text.Cancel Finish同樣,這個(gè)文本用于提醒我們哪個(gè)選項(xiàng)卡是當(dāng)前正在查看的。選擇塊,在 Other和Tab2之間來(lái)回變換 Current Block屬性值,應(yīng)該可以看到 Report Studio中的選項(xiàng)卡隨之切換。6.5.4創(chuàng)建選項(xiàng)卡正如前面所說(shuō)的,我們要使用HTML項(xiàng)和一些未記錄和不受支持的功能實(shí)現(xiàn)選項(xiàng)卡。首先要做的是,使用 Report Viewer將參數(shù)值傳遞給服務(wù)器。作為表單變量傳遞參數(shù)值,表單變量的名稱是參數(shù)名(比如 pT
34、abToShow)前面加上 p_,比如 p_pTabToShow。這種參數(shù)傳遞機(jī)制是未記錄和不受支持的。請(qǐng)注意本文前面的說(shuō)明。我們使用一個(gè)HTML對(duì)象創(chuàng)建這個(gè)表單變量。把一個(gè)HTML項(xiàng)目拖到Page Header中,像這樣: 圖12.把一個(gè)HTML項(xiàng)目拖到 Page Header中click to edit tmxbTab 1Cancel % Back Next Finssh這個(gè)項(xiàng)的位置無(wú)所謂,因?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。這個(gè)表單變量讓服務(wù)器認(rèn)為報(bào)表中已經(jīng)定義了名為pTabToShow的參數(shù),所以服務(wù)器會(huì)保留它的值并在重新提示報(bào)表時(shí)把它傳遞回 Report Viewer?,F(xiàn)在,回到前面在該示例中添加的表格。盡管目前還看不出來(lái),但是這個(gè)表格中的兩個(gè)單元格將變成用戶可以單擊的選項(xiàng)卡。在每個(gè)表格單元格中添加一個(gè)HTML項(xiàng),讓它們?cè)趩卧裰芯又?圖13.在每個(gè)表格單元格中添加一個(gè)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)建一個(gè)按鈕:按鈕標(biāo)題(工具提示文本)-Show Tab 1操作:o 將表單變量p_pTabToShow設(shè)置為Tab1 o運(yùn)行函數(shù)reprompt按鈕標(biāo)簽-Show Tab 1*換句話說(shuō),當(dāng)用戶按這個(gè)按鈕時(shí),它會(huì)設(shè)置表單變量并重新提示報(bào)表。 注意,reprompt函數(shù)是未記錄和不受支持的。請(qǐng)注意本文前面的說(shuō)明。 選擇右邊的HTML項(xiàng)并把HTML屬性設(shè)置為:Show Tab 2運(yùn)行報(bào)表:圖15.運(yùn)行報(bào)
37、表Show Tab 1Show Tab 2TablCancelFinish可以通過(guò)單擊按鈕在選項(xiàng)卡之間切換,顯示相應(yīng)的文本。圖16.切換選項(xiàng)卡Show Tab 1Show Tab 2FintshCancel核心選項(xiàng)卡功能現(xiàn)在完成了。剩下的工作都是裝飾性的;這個(gè)用戶界面是有效的,但是看起來(lái)不像選項(xiàng)卡式用戶界面。另外,還 要把提示放到選項(xiàng)卡上。返回到 Re port Studio。6.5.5設(shè)置選項(xiàng)卡的樣式我們要用邊框、對(duì)齊和其他樣式改變HTML按鈕和塊的外觀,讓它們看起來(lái)像選項(xiàng)卡。首先,處理HTML按鈕。選擇父表格,在 Table Properties屬性中選擇 Fixed Size仍然選擇表格
38、,選擇 Size and Overflow屬性并刪除當(dāng)前的寬度設(shè)置。選擇每個(gè)表格單元格并把寬度都設(shè)置為100 pixels(P X)。在實(shí)際的報(bào)表中,必須調(diào)整寬度,讓寬度與每個(gè)選項(xiàng)卡中的文本匹配。請(qǐ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對(duì)象之一,會(huì)看到?jīng)]有樣式屬性:圖18.重新設(shè)置HTML按鈕的樣式iQConditionalRefxlerHTM Soura Vari
39、ableHTHL SourceSotrccTypcHXGeneralDescripbonMisceftanusNarw在IBM Cognos 8中,可以在報(bào)表中定義樣式并把它們應(yīng)用于報(bào)表對(duì)象。同樣,也可以把這些樣式應(yīng)用于6.5.6 IBM Cognos 8 按鈕樣式在IBM Cognos 8中,可以定義一個(gè)類,然后在HTML按鈕定義中引用它。使用 P age Explorer 打開 Classes把一個(gè)Class對(duì)象從工具箱拖到 Local Classes區(qū)域:選擇這個(gè)新的類對(duì)象并設(shè)置屬性:IE)!Text cbutton ttte-苫how Tab FonckkHTML對(duì)象。Name: HT
40、MLButtonsBorder: NoneBox Type: BlockBackground Color: White* Class or Selector: HB返回到提示頁(yè)面。Class/Selector屬性是在把樣式應(yīng)用于HTML項(xiàng)時(shí)使用的標(biāo)識(shí)符。選擇左邊Tab 1的HTML對(duì)象并把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對(duì)象并把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)表級(jí)定義的通用樣式定義。 選擇左邊的HTML對(duì)象并把
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對(duì)
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)在需要通過(guò)設(shè)置選項(xiàng)卡的樣式表明哪個(gè)選項(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對(duì)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兩個(gè)表格單元格之間的邊框是灰色,但是我們?cè)谟疫叺谋砀駟卧裆弦呀?jīng)把它設(shè)置為黑色了。因此它既有灰色也有黑色。每個(gè)表 格單元格實(shí)際上有自己的邊框,但是在默認(rèn)情況下它們是重疊的。也就是說(shuō),不會(huì)看到下面這樣并列的邊框:圖32 .不會(huì)看到下面這樣并列的邊框I Show Tab 1Tab 1邊框會(huì)重疊在一起。當(dāng)邊框重疊時(shí),按一定的規(guī)則決定(優(yōu)先)顯示哪個(gè)邊框。在這里,顯示左邊的單元格邊框。 當(dāng)右邊的單元格活躍時(shí),我們需要調(diào)整邊框,讓左邊的單元格沒(méi)有邊框。返回到 Re port Studio。選擇左
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人二手房買賣合同格式范文(2篇)
- 2025年個(gè)人住房借款保證合同樣本(2篇)
- 2025年不動(dòng)產(chǎn)附負(fù)擔(dān)贈(zèng)與合同經(jīng)典版(2篇)
- 2025合同模板個(gè)人股份轉(zhuǎn)讓合同范本
- 貸款合同信息查詢
- 2025年上海市裝飾裝修施工合同(2篇)
- 炸雞店租賃合同
- 財(cái)務(wù)業(yè)績(jī)?cè)u(píng)估與激勵(lì)總結(jié)
- 2025年全球及中國(guó)防風(fēng)雨電氣箱行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)稅務(wù)紛爭(zhēng)解決方案行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 數(shù)學(xué)六年級(jí)上冊(cè)《弧長(zhǎng)》課件
- 體檢科運(yùn)營(yíng)可行性報(bào)告
- 廣東省廣州市黃埔區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末生物試卷+
- 北京市豐臺(tái)區(qū)市級(jí)名校2024屆數(shù)學(xué)高一第二學(xué)期期末檢測(cè)模擬試題含解析
- 設(shè)立項(xiàng)目管理公司組建方案
- 薪酬戰(zhàn)略與實(shí)踐
- 答案之書(解答之書)-電子版精選答案
- 中國(guó)古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級(jí)指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 非酒精性脂肪性肝病防治指南解讀課件
評(píng)論
0/150
提交評(píng)論