亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Business Objects 以及reporting service報表點滴--學習筆記

2024-07-21 02:45:04
字體:
來源:轉載
供稿:網友
看來圖片顯示不出來,可從此處下載Word文檔。

http://download.csdn.net/source/1902006





Ver20091111



BO
BO入門及筆記

主要包括用designer構建universe,在webi ( Web Intelligence Rich Client )中使用universe構建報表。

目前使用的版本是BusinessObjects XI 3.1 -- BusinessObjects Edge Series 。



主要與Universe相關
關于measure
在object的屬性定義中有個qualification屬性的設置,可以設置為 dimension , measure , detail 中的某一項。這里需要對measure提一點的是,緊跟著會有一個”choose how this measure will be PRojected when aggregated”的設置,這個設置的用途目前發現是在webi的報表中,如果對query取出來的數據再進行聚集計算,這個設置是默認的聚集計算方式。

對于measure的再認識,是可以用來且一般是用來作計算的,而不必非要去做聚集計算……

對于measure的再再認識,主要是BO中比如webi的圖表中的一些字段指定要用measure類型,其它諸如dimension的還不能拖到指定measure的位置使用。其實這個分類的設計挺蹩腳的,因為有時一個列可以具有多個BO中的類別,比如像日期類型即可做維度又可作計量?!?



Measure的建議用法,(A)一般是數值類型的列或普通計算列應該設置為measure類型并且不要默認聚集函數,(B)而那種已經調用聚集計算函數得到的列默認就是measure類型但不要默認聚集函數。(C)要進一步做聚集計算可以在webi中調相應函數來做。(A)是由于webi中的圖表等處必須要measure類型,(B)是防止使用隱藏列(由于BO在顯示的維度少于取出的維度時會找默認聚集函數做計算),目前BO的隱藏列的做法很不正規。

這里會費點事的地方是會改Universe對object的默認設置。省事的是不必設置隱藏列,而且如果有無默認聚集計算函數的measure類型的object和有默認聚集計算函數的的object在同一個表格里時,BO也就不會做聚集計算了,從而有一定的容錯性,可以防止部分列的默認聚集計算函數被誤改之后還能保持報表顯示正確。

原則是,盡量顯式去實現計算,防止對BO工具不熟看不到一些隱式信息而看不懂報表是如何實現的或做了什么樣的默認計算。

(另外,想利用measure的默認計算函數省點事的,還不太可能,比如在圖表中需要顯示measure列的標題時,基本還得定義一個variable以利用其名稱作為標題,此時再給此variable顯式定義計算方式并不多費時間。)



由于BO中一些特殊性。從本義上看,Measure是表示維度的度量特性,而一般是數值類型的列都是用于度量的,這些列從理論上來說應該設置為measure類型。在實際使用中,在Universe中把數值列拖為對象時,默認是dimension類型,雖然用于表格不出什么問題,但圖表上及其它某些地方一定要求是measure類型,從而必須改默認類型。另一方面,為了避免BO在顯示的維度少于取出的維度時默認做聚集計算,而不能直接顯示明細行,雖然可以加隱藏列避免,但是還是把默認的聚集函數設置為無比較好,要想進一步做任何聚集計算可以在webi上調用聚集計算函數實現。















關于lov ( list of values )
看來每個(dimension和detail類型的)object都有自己默認的lov,在object的位于properties選項卡的屬性頁上,點擊 associate a list of values 框中的edit按鈕,可以從彈出的query panel右上的result objects框中的內容可以看到。也可以在這里編輯。

使用object的lov目前知道是在@prompt (不管是在Universe中定義還是在webi中定義)函數中使用,使用寫代碼的方式可以參考@prompt函數的定義,在webi中可以有界面編輯的方式。在webi中run query時可以在彈出的prompts界面上看到最終使用界面。



一個應用是從id與name的列表清單中根據name選擇,再使用相應的id的值。這時需要:先在Universe設計中對這個id object的lov進行設置,找到lov的編輯界面,默認只在右上的result objects框中有本id object,然后拖一個name object過去(必要時還可設置下面的條件過濾),注意需要拖到id object的右邊,保存并export這個Universe。然后在webi報表中對這個id object作prompt過濾即可看到。下面有兩個截圖可以參考。









關于cascade lov
創建與使用:在(designer編輯)Universe中,從ToolsàList of Values…àcreate cascading lists of values菜單項進去。然后把左邊的一些有層次結構的object弄到右邊來,最后點Generate LOVs的按鈕生成。而點擊完按鈕也就生成好了,點擊菜單項“Edit a list of values…”進入編輯界面其實很難看到已經生成的有層次結構的cascade lov,很不直觀,選中編輯界面中某個曾設置過cascade lov的object,點Edit按鈕,可以在彈出的query panel界面的右下部看到多了一個條件。這個編輯界面也可以從object屬性的編輯lov的界面進入。使用時像普通lov那樣在webi報表中對層次結構中的某object作prompt過濾,在run query時即可看到有層次結構的數據供選擇。

幾點說明:如果選擇的有層次結構的objects中有已定義的lov的話,則這些lov會被cascade lov覆蓋。然后可以在普通編輯lov的界面上再補上定義。

還要注意一點,生成cascade lov后在下層object的lov的編輯界面上能夠看到在conditions中有一個條件,但是如果不做生成cascade lov而直接添加條件,是不能被當作cascade lov處理的。

如果選擇的有層次結構的objects都只是id的話,沒作特殊處理只能看到一些id,要顯示name需要在普通編輯lov的界面上把name object拖上去。這樣可以避免name的objects來作層次結構而導致可能的重名問題。

一些相關截圖如下:







Lov與Prompt
在prompt小節介紹。



Lov的相關問題
如果一個object,刪掉了select中的東西,默認的lov也有問題,需要重新拖拉一下。

Derived Tables
Derived Tables是自寫select sql的方式,應該是最靈活的了。不過還有一些問題,比如里面不能有order by語句,不能預排序。從而對多列先排序,再取top行的效果目前沒法支持。

另外,一個Derived Table還可以被另一個Derived Table使用。



在Universe中復制粘貼要注意的
注意有些不能完全復制,比如object的lov的定義就不能被復制。



對于Universe文件的復制的注意事項
由于在文件系統的Universe文件與在cms系統里的Universe數據有某種對應關系,單純復制文件系統的Universe文件,還是對應同一個cms系統里的Universe數據。要想復制得到完全獨立的另一份Universe文件,還需要用designer打開Universe并在FileàParameters界面上改Name屬性,而且最好與文件名同名。

另外,復制不等于備份,簡單復制到另一臺機器是用不了的,見后面備份的說明。



Universe中的object定義parse出錯也可能照常使用
universe中的object的定義,如果使用parse校驗正確性出錯,但使用也可能沒問題。不過要注意定義這個object一定不要出錯,比如類型要設置正確,不然會在運行時報錯難以明白。











與Universe和webi都很相關
Webi如何使用Universe
必須把Universe在designer中進行Export的動作,放到CMS中,webi才能使用。

@variable與@prompt
可以使用 @variable(‘Name1’)來引用@Prompt(‘Name1’,……)中的輸入值。這樣可以避免重復使用完全相同的Prompt。這與在Universe或webi的位置沒有關系,也沒有先后順序,即不要求先有@Prompt再有@Variable。另外,調用方式完全相同的prompt會在webi中被當作一個prompt處理。

但是,在universe中使用optional Prompt的variable會有問題,不通過。

另外,在webi中取@Prompt的數據還可以用UserResponse的函數。



關于Prompt
Universe與webi中的prompt有區別,一個是universe中的不能為optional,另一個是webi中的不能用純文本實現(除非是用custom sql)。



調用@Prompt時的一些參數說明:

關于參數lov,如果使用'ClassName1/ObjectName1',則是使用'ClassName1/ObjectName1'在Universe中定義的lov。當寫sql語句對某列進行過濾時,對@Prompt函數的lov參數傳遞本身列對應的object是一點問題沒有,而且一般都是這樣做,比如在webi中。



級聯參數或級聯Prompt,可以在定義lov的時候使用另一個帶Prompt的derived table或使用普通table但是帶where條件且其中使用了Prompt,從而達到級聯效果。但是一點缺陷是只能傳回一個值,深層次的那些prompt的值傳不回來。



Prompt使用依賴性的或級聯性的Prompt來縮小可用值清單的范圍的例子。其思路是在一個Prompt中作為lov的object會關聯到其他prompt。

比如對于例子club數據庫,

追加定義兩個derived table,以及相應的class。(給region_id和city_id對應的objects的lov加上name)。

DTCountryRegion :

select region_id, region from Region

where Region.country_id=@Prompt('countryid','N', 'Country/Country Id',Mono, )



DTRegionCity:(這里的object是引用的上一個derived table對應的class中的object)

select city_id, city from City

where region_id=@Prompt('regionid','N', 'DTCountryRegion/Region Id',Mono, )

再定義一個過濾器cascade prompt city filter,(這里的object是引用的上一個derived table對應的class中的object),另外注意City.city_id是直接引用City表的city_id列,從而可以達到一定的可重用性。

City.city_id In @Prompt('select city','N', 'DTRegionCity/City Id',Multi, ,)



然后就是在webi中使用了,如下圖。





Prompt可以使用id而顯示name,只需要設置lov,參考lov和cascade lov的說明。











ambiguous query
有時在webi的從edit query中打開的sql viewer中的customer sql中能夠看到多個sql,即在synchronization字樣的根節點下有幾個select節點,一般設置好context中的join可以解決。

另外,如果在customer sql中看到sql不對的,比如join了過多的table,也一般設置好context中的join可以解決。



還有,看到synchronization下有多個select節點的問題,不一定是由于join或context導致的,不小心把object引用的column寫成其他不相關的表也有可能出現這種情況(如下圖),所以有必要仔細檢查及比對一下每個問題sql語句。





在universe中對象名稱自動同步到webi報表
在universe中改一個對象的名稱,似乎webi能自動同步修改完全。

但似乎在universe中改了名,雖然能夠在webi中自動刷新,也許要多刷新幾次。



Prompt輸入在webi的顯示順序
輸入參數的顯示順序在webi的query panel中可以調整,但不太好用。沒出現的可以把用到prompt的條件刪掉重新加。但在universe里的沒法弄,似乎默認在最前。





主要與webi相關


Drill down的再試驗……





報表中有多表格時設置它們的間距
BO中表格與表格之間保持距離是靠設置 relative position。



文本框的下劃線
拖出文本框(Blank Cell)時看到的下劃線是border的下邊。



不分頁能看到處理report中的所有表格或圖表
按鈕 switch page/quick display 能切換到顯示大于一頁的高度的情況。





給數字做custom的format的入門
在custom數字的format時,給出幾個文本框,如positive、negative,equal to zero,用法是每個文本框中都需要一個完整的format串。



取日期部分的函數
Bo的webi中不能直接取時間的datepart,但是可以用其他方式得到,=ToDate(FormatDate([A DateTime Object];"dd/MM/yyyy");"dd/MM/yyyy")



關于distinct
除了完全自定義sql語句,在webi中有兩處地方設置。

一處在webi的edit query界面的properties選項卡中,是一個復選框屬性”retrieve duplicate rows”來控制。

一處是在webi的table block的屬性中有個復選框屬性”avoid duplicate row aggregation”,是用于去除重復行的,默認沒勾選,做了distinct的動作。注意一般需要勾選,防止distinct。



Top與rank
top可以用rank弄出來,效果看來更好.因為top 只是強行過濾,而當排名值有多條記錄相同時rank會把這些都取出來。

但(sql server 2005 的)Transact-SQL中也有rank函數。



Union all
在webi,似乎沒法達到union all的效果。





Hyperlink
webi中的hyperlink中引用的webi如果有重名會有問題。

關于webi中的hyperlink中的參數傳遞,看來直接用 URLEncode(UserResponse("..")) 好使,雖然不符合lsM的規定格式,另外對于optional的單值和多值參數也好使。另外不傳參數看來也相當于optional。

傳數字參數時注意可能默認方式轉為字符串會有逗號,傳過去出錯,需要格式化將其去掉。



在圖表中做hyperlink鏈接到其他報表目前不行或不知如何實現。



但是就算是能鏈接到其他報表,也是采用的url的方式而不是比較直接的方式。由于BO的InfoView有兩種頁面,jsp和aspx,同時支持挺費勁的,但是也找到了方法。

例如下面代碼:

= "<a href=/"javascript:var path='/OpenDocument/opendoc/openDocument.jsp';if(document.location.pathname.indexOf('.aspx')>0) path='/OpenDocument/opendoc/openDocument.aspx'; open(path+'?sDocName=Location+Availability+Detail&sType=wid&lsSBegin+Date:=" + URLEncode(""+UserResponse("Begin Date:")) + "&lsSEnd+Date:=" + URLEncode(""+UserResponse("End Date:")) + "&lsSLocation:=" + URLEncode([Location]) + "&lsSIP:=" + URLEncode([IP]) + "','_parent');/" title=/"/" target=/"_self/" nav=/"web/">"+FormatNumber([Availability - Location Availability];"#,#0.00")+"</a>"



隱藏列的做法
Webi中沒有屬性來設置是否隱藏列,只能采用一些非正規方式。

隱藏列用alert方式來做似乎也很好使,本質上是把這一列的顯示內容給變掉了,可以變成hyperlink的顯示,從而對這一列的原值進行操作沒有問題。另外,隱藏列也可以把某一列的內容隱藏,把這一列的右(左)border 去掉,把右(左)邊的列的左(右)border去掉,從而看起來兩列成一列而達到隱藏效果。



隱藏格子內容的做法
目前只能使用非正常方式,設置格子的Horizontal padding=2000px。



關于重復行
圖表或表格有一個屬性,叫做 avoid duplicate row aggregation ,在不同的狀態下會有不同的情況。

其一個作用如圖:



其中,數據表如圖:

在Universe中的主要定義如下圖,





在使用聚集函數時,有時也會遇到重復行的問題,如圖: ,其中,表格的“avoid duplicate row aggregation”屬性為選中狀態。而Variable“avg to Val-none exp in”= Average([Val - none]/[Val2 - none]) In ([Id]) 。如果不勾選“avoid duplicate row aggregation”又會出錯。

為什么呢,原來是Variable中的聚集計算函數的參數使用了表達式的問題,單純的聚集計算是不會出錯的。如圖所示, ,其中“avg to Val-none in id” =Average([Val - none]) In ([Id])。

就算再簡單的表達式,如“avg to Val-none exp const” =Average([Val - none]/1),也會出錯,如圖, 。

這時,解決的方式有一種,就是把表達式計算搬到Universe的object定義上。



Webi中選中一列卻沒法排序或rank的問題
目前發現的原因是這一列直接使用了表達式,如果定義一個Variable,把表達式放在Variable里,在列上使用Variable,則又能排序或rank了。



Break概念
BO中的break對應分組功能。

做break要在表格(目前已知的是垂直表格)的格子中選中某個object,再在toolbar上找到相應按鈕點擊進行設置或反設置。設置之后,點中這個格子,會在屬性頁上多一些關于break的屬性設置。Break有footer和header對應上下分組行。

其他報表產品(如Reporting Service)可以折疊分組行下的明細行,但webi的報表還不能在當前版本做折疊。



但是,webi中不用break看來也可以做n層分組計算。這可以通過顯式調用一些聚集函數,也可以使用measure并使用其默認的聚集計算方式。



注意webi中有break時的排序是只能在break內排序,而無法拉通排序。比如,對兩個列作groupby后進行聚集計算,對計算值排序,在reporting service中可以做到拉通排序,而BO只能做到在第一層內部排序。…………….



一些使用break達到的一些顯示效果
Webi中要想達到如下圖的效果,即被分組列在明細行上不顯示,目前只能是把被break的列在明細行的內容隱藏,且使用非正常方式,即設置其Horizontal padding=2000px,從而也就達到效果了。







Break上有個remove duplicate values的選項能夠控制break對應列是否在較明細行上顯示重復值,效果是是否有中空。如圖:

不顯示時的效果。

顯示時的效果。











一些比較奇怪的問題
custom sql少東西
有時在webi的從edit query中打開的sql viewer中取得的custom sql少東西,估計是由于上次輸入設置的一些optional的參數值導致的或別的問題。這時重新生成幾下custom sql就好了。



改數據庫的schema后運行webi報不正確錯誤信息
更改數據庫的schema后,相應改了universe后,運行webi出錯。報錯信息中一方面universe的名字不對,一方面報數據庫表格中view使用的一個表不對,后來發現原因是數據庫中view的問題,引用的表格還是舊的名字,更新之后錯誤就消失了。







Webi中改universe引用的一些問題
把一個Universe

要想在Webi中切換universe,不能直接更換Universe的內容,比如把以前的Universe文件刪掉,再把另一個Universe通過復制的注意事項后產生出一個獨立的同名的Universe文件,(或者說覆蓋所引用的Universe文件),然而,這樣做很有問題,一般情況下報表就出錯了。

用Import和Export的方式是很正確的方式,但這一般只適用版本升級。

一個可行的方式是使用webi中切換Universe的功能切換到另一個Universe上去,這是在query panel中的屬性頁上做的,這樣至少報表不會出錯。另外,在切換時會出現一些奇怪問題,比如切換完了,發現引用的Universe的名稱沒變。這似乎webi有bug,不能及時刷新universe的名稱,保存關掉后再打開發現已經改掉了。一次不行,再試一次。另外,有時還出現無論如何切換不到某個Universe上去,這時只有先把那個Universe通過復制的注意事項弄出一份獨立的Universe出來,先切換到那個備份上,以后再切換回去。

還有,就算webi中切換了Universe,也還在某些地方殘留以前Universe的痕跡。比如在Import webi報表和相關的Universe到*.biar時,還得必須把以前殘留的Universe導出。另外某些報錯信息也會提到以前的Universe,雖然實際上很可能與之無關。





換完licence出錯
換完licence登錄不進系統或運行已打開的designer或webi出錯。主要是由于先刪除以前的licence再添加,這樣導致許多server都被disabled了。解決問題是登錄進入central management console,到server的清單把它們都設置為enabled。必要時可以改日期再解決。



登錄不進CMS
沒有搞定,只能重裝,有時還得刪注冊表。



Hyperlink相關
有時候在單元格直接用hyperlink與在alert中用hyperlink但在格子中用直接的object的效果差別很大,比如直接用hyperlink會出一些空行,類似作了外連接的效果。



Universe保存時很慢
如果數據庫的服務或服務器關了,會使Universe保存時極慢。







其它
備份的方式特別,Import與Export
只能通過import成 *.biar文件才能自如保存,單純copy備份的方式在另一個CMS上(一般也是另一臺機器上)就打不開文件了。



而要import,先要export。即先要把designer中的Universe和webi中的報表export(相當于保存)到CMS中,才可能從CMS中import出來到普通文件系統上。



另外,如果要看BO自帶的例子,可以在designer中Export出例子Universe,在webi中Export出例子報表,然后打開文件。



功能項調用
很多功能不會從菜單或右鍵菜單出來,這時需要多看看工具欄以及屬性頁等,即多動手點點。





未整理


交叉表的過濾
交叉表可以設置過濾,只顯示部分列或行,但這必須在工具欄上的過濾按鈕對應的界面設置,而且在普通的屬性頁上沒法看到。



有關過濾
在工具欄上還有另一個過濾的按鈕,“Show / Hide Filter Pane ”,在那里可以對圖表的數據做某種過濾





BO的webi中圖表的legend的title的隱藏
沒辦法用常規方式,只能變白,字體最小





BO的webi中圖表的X軸上的內容沒有按比例


BO的圖表顯示數據,目前發現在X軸上顯示的不是按照比例顯示,而似乎把有內容的等間距顯示,比較奇特。









SSRS
Sql Server Reporting Service

入門點
(環境是Sql Server 2005 上的Reporting Service )

報表基本構成
一個.rdl文件和一個可共用的.rds文件。.rds文件簡單負責數據庫連接。.rdl文件是一個報表的最主要部分。.rdl文件又主要分兩部分,數據部分和顯示部分。

在數據部分添加一個最簡單的dataset,在顯示部分添加一個最簡單的table控件。執行一下dataset的sql語句,可以自動取得所有列。把dataset的一些列拖到表格控件中間行的格子中,便可得到一張通常意義上的報表。點擊“Preview”便可預覽了。



頁眉和頁腳
默認是不出現的,需要點擊菜單“Report”,在下拉菜單中可以看到“Page Header”和“Page Footer”,點擊即可。



表格控件基本及其分組
表格控件拖到報表上,默認顯示3行,代表3種不同類型。中間是明細行(Table Details),上面是表頭(Table Header),下面是表尾(Table Footer)。要控制表頭或表尾的顯示,先在layout界面上點中表格里的任意一處位置,此時會在表格的右方和上方顯示一些東西。在右方顯示的東西上點擊右鍵,在右鍵菜單中可以看到Table Details ,Table Header ,Table Footer 等的菜單項,這可以控制相應東西的顯示。

還是這個右鍵菜單,可以看到與分組相關的菜單項,如“Insert Group”,“Edit Group”等,點擊可以設置相應的分組信息。

需要說明一下的是,分組行與明細行與表格行,在屬性頁上是看不出來是什么類型的行的,只有看前面提到的表格右方顯示的圖標,這些圖標間有區別,才看得出來。



參數
參數往往可以在給出一點點定義后由Visual Studio的IDE環境自動生成,不過也有一些高級應用情況需要手工添加的。

這里有兩種不同位置的參數,一種是在dataset的sql語句上,一種是在報表上。

前一種的定義形式是 @參數名 ,例如select * from table1 where id = @id , 除了在dataset的sql語句上看到,還可以在dataset的一堆屬性頁中的Parameters屬性頁上可以看到。當寫好前面的sql語句并運行后,IDE會自動生成兩種類型的參數。

后一種在點擊菜單項“Report->Report Parameters”后而彈出的界面上可以看到及維護。

在報表上的參數負責從界面上得到輸入值,在dataset的sql語句上的參數影響實際執行的sql查詢語句的參數值。既然參數分了兩層,中間可以存在一個表達式轉換,從而兩層的參數不必一一對應。

另外,報表上參數也不一定全部在運行界面上的輸入部分顯示,因為還有Hidden以及Internal屬性來控制。從而又加入了一些靈活性。比如可以設置參數為Internal且默認值為另一個dataset中的列值,從而得到一個中間參數。





使用超鏈接連接或引用其他報表
比如對于表格中的格子,右鍵菜單中點Properties項,在彈出的對話框界面中選中Navigation頁,在Hyperlink action中設置即可,比如可以設置為Jump to report,再設置相應報表路徑及參數。跨project的報表也可以引用,估計路徑是與發布位置有關。

如果是圖表,則是在數據列的屬性頁中的Action屬性頁界面設置。



折疊或隱藏功能
可以折疊或隱藏表格中的行(如分組后的明細行)以及整個表格,推廣說可以折疊或隱藏控件里的部分以及整個控件。如下圖,

, , 。

其設置地方在于每個大大小小的控件一般都有一個Visibility的組合屬性,包括兩個具體屬性Hidden和ToggleItem。ToggleItem的值是一個控件名稱,作用是用另外一個控件來控制本控件所代表顯示的部分的可見性,即折疊效果。而Hidden則是控制初始顯示時的可見性,由于可使用表達式的原因,可以設置一個輸入參數在輸入時控制。

具體設置參考下圖:(效果可見前面的圖)



表達式的強大
SSRS的一個強大之處是幾乎所有屬性值的位置都可以使用表達式。從而可以實現很多特效。

比如,

用參數控制折疊隱藏的初始效果。

使表格中的單雙行的背景色不同??梢詫γ骷毿械谋尘吧珜傩栽O置表達式,如 the value of the Propery BackgroundColor = iif(RowNumber(Nothing) Mod 2, "White", "LightGrey") 。

以及dataset的sql語句也可以使用拼接的方式,從而可以實現很多參數化效果,比如根據參數動態排序,或者選擇性顯示某些列等。

擴展一點是根據表格中某個單元格的值的不同而把整個行(或部分格子)設置顏色,以達到分類或提醒的作用。



參數輸入值范圍控制及依賴關系
可以給一個輸入參數提供一個下拉列表,其列表值集合可以控制。并且可以達到在列表顯示名稱而實際輸入ID的效果。

列表值集合是由另外一個dataset給定,其實主要就是一條select語句。定義好dataset后,在參數設置的地方“Report->Report Parameters”就可設置,設置Available values的地方即可。

簡單情況下,這條select語句不帶任何參數或變量。而如果其使用了別的參數,則形成了參數依賴關系,這時可以達到的效果是讓這個輸入參數的可選值的范圍隨著其他相關參數的輸入值變化而變化。當然,現在sql語句不能直接寫,而需要用字符串拼接的方式了。

雜項










在表格的明細行對某列作一個分組后(比如把有時間的列按照日期來分組),其他列上顯示的看來是默認取了First的值。









一些問題
實際執行的sql語句中的參數類型問題
SSRS報表在取數據時,會執行exec sp_executesql形式的sql語句(至少用profiler抓到的sql語句是這樣),這sql語句存在問題,它經常會把原來的任何類型的參數改為使用nvarchar(n)的類型,而且n恰好是該參數在字符串形式時的長度,如果想基于此sql語句改改參數值進行查詢,而輸入了一個長度比上次的參數值長的參數值,往往會報錯,比如日期轉換出錯,就算沒報錯結果也是錯的,這時需要手工把n改得足夠大。



圖表不能很好解決維度中的重復值問題
如圖,id這個維度上有重復值,但圖表上只給顯示其所對應的一行記錄。











SSRS vs BO




SSRS可支持的組間排序的實例
如下圖,設計時



運行時



說明,這是在報表上再次對兩列分組,并進行Count的聚集計算,再拿count值來排序,這是組間數據的排序。而BO目前使用break只能支持組內(即內層break的數據)的排序,即某一組內的多行數據根據分組列以外的列來排序,據說最新補丁可以支持到上面截圖的效果。



Some Problem
在reporting service的圖表中,如果遇有維度值都相同的行,則會簡單顯示出來,而BO的webi報表中的圖表一般會作某種聚集計算(因為傳過去的一般都是measure)再顯示。







Tmp problem






用hyperlink傳空值,那邊接收到的值很奇怪





Javascript:var%20path='/OpenDocument/opendoc/openDocument.jsp';if(document.location.pathname.indexOf('.aspx')>0)%20path='/OpenDocument/opendoc/openDocument.aspx';%20open(path+'?sDocName=Availability_Detail+t1&sType=wid&lsSBegin+Date:=5/5/2009+12:00:00+AM&lsSEnd+Date:=9/4/2009+12:00:00+AM&lsSSAP+System:=R3E&lsSServer:=','_parent');









本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/infinite/archive/2009/12/21/5049607.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国内产的精品视频在线观看| 亚洲天堂开心观看| 久久亚洲国产精品成人av秋霞| 日韩免费精品视频| 中文字幕国产亚洲| 亚洲黄色在线看| 亚洲第一色在线| 国产精品视频自在线| 日韩精品视频免费专区在线播放| 亚洲精品短视频| 最新中文字幕亚洲| 最新日韩中文字幕| 久久久影视精品| 最近免费中文字幕视频2019| www.日韩欧美| 日韩美女在线播放| 91在线观看免费网站| 亚洲人成电影在线| 国产精品高潮呻吟视频| 日韩av在线影视| 久久夜色精品国产亚洲aⅴ| 国产亚洲xxx| 68精品国产免费久久久久久婷婷| 日韩一二三在线视频播| 欧美国产日韩免费| 韩国福利视频一区| 亚洲**2019国产| 亚洲精选一区二区| 久久久久久91香蕉国产| 久久亚洲精品一区| 午夜精品久久17c| 亚洲成人黄色在线观看| 亚洲男人第一av网站| 日韩国产在线播放| 九九热精品视频| 欧美性xxxx18| 欧美另类极品videosbestfree| 欧美成人免费全部观看天天性色| 色琪琪综合男人的天堂aⅴ视频| 国产盗摄xxxx视频xxx69| 久久亚洲综合国产精品99麻豆精品福利| 国产精品国模在线| 日韩在线观看高清| 国产精品自产拍在线观看中文| 成人xxxx视频| 久久理论片午夜琪琪电影网| 97欧美精品一区二区三区| 国产69久久精品成人| 日韩欧美在线字幕| 欧美国产在线视频| 欧美肥臀大乳一区二区免费视频| 成人国产精品色哟哟| 久久精品国产99国产精品澳门| 精品国产电影一区| 亚洲一二在线观看| 欧美电影在线观看网站| 精品国产乱码久久久久久天美| 久久网福利资源网站| 亚洲色图欧美制服丝袜另类第一页| 欧美精品久久久久久久久久| 国产成人精品在线视频| 亚洲在线免费视频| 日韩欧亚中文在线| 国产丝袜高跟一区| 疯狂做受xxxx欧美肥白少妇| 国产精品激情av在线播放| 亚洲免费视频一区二区| 亚洲欧美日韩精品久久奇米色影视| 亚洲成人激情视频| 一区二区三区回区在观看免费视频| 国产精品成人一区二区三区吃奶| 欧美日韩在线视频一区二区| 欧美最猛性xxxxx免费| 精品国产精品三级精品av网址| 欧美成人免费全部| 欧美电影在线免费观看网站| 亚洲国产精品资源| 91精品国产一区| 91久久在线视频| 国产精品一区二区电影| 国产成人a亚洲精品| 亚洲中国色老太| 欧美午夜丰满在线18影院| 日韩欧美国产一区二区| 亚洲精品少妇网址| 青青草精品毛片| 欧美成人中文字幕| 91av在线免费观看视频| 日韩欧美aⅴ综合网站发布| 成人伊人精品色xxxx视频| 精品日本高清在线播放| 国产性猛交xxxx免费看久久| 久热99视频在线观看| 欧美激情视频在线| 亚洲国产精品久久久久| 中文字幕欧美精品在线| 国产精品69精品一区二区三区| 亚洲va久久久噜噜噜| 欧美人与性动交| 久久激情五月丁香伊人| 欧美老肥婆性猛交视频| 性色av香蕉一区二区| 另类天堂视频在线观看| 性欧美亚洲xxxx乳在线观看| 欧美亚洲激情视频| 日韩精品在线播放| 亚洲精品一区二区在线| 中文字幕日韩综合av| 亚洲а∨天堂久久精品9966| 国模精品一区二区三区色天香| 亚洲一级一级97网| 午夜精品久久久久久久99热| 色午夜这里只有精品| 日韩av在线免费观看一区| 97涩涩爰在线观看亚洲| 国产精品午夜国产小视频| 丰满岳妇乱一区二区三区| 欧美日韩亚洲视频一区| 国产精品69精品一区二区三区| 视频一区视频二区国产精品| 欧美性xxxxxxx| 久久香蕉频线观| 国产免费一区二区三区在线观看| 久久久日本电影| 九九综合九九综合| 亚洲免费av电影| 色七七影院综合| 92看片淫黄大片看国产片| 国产一区二区三区直播精品电影| 国产一区二区三区毛片| 欧美日韩中国免费专区在线看| 91精品久久久久久久久| 欧美日韩性生活视频| 国产丝袜精品视频| 热久久99这里有精品| 亚洲白拍色综合图区| 日韩中文字幕国产精品| 亚洲综合大片69999| 欧美性色视频在线| xxx成人少妇69| 日本一区二区在线播放| 亚洲人精选亚洲人成在线| 国产欧美一区二区三区久久人妖| 日韩色av导航| 国产精品久久久久久av| 午夜精品视频网站| 欧美日韩国产精品一区| 亚洲国产福利在线| 午夜精品福利在线观看| 国产精品美女网站| 久久亚洲欧美日韩精品专区| 中国人与牲禽动交精品| 亚洲女性裸体视频| 国产成人精品在线| 欧美高清自拍一区| 久久久精品电影| 国产精品成人观看视频国产奇米| 亚洲毛茸茸少妇高潮呻吟| 亚洲人成绝费网站色www| 国产精品久久久久久久av电影| 国内外成人免费激情在线视频| 国产精品久久久久久久9999| 北条麻妃一区二区三区中文字幕| 欧美亚洲视频在线观看|