2013-03-13 43 views
3

我們有返回以下WCF服務:壓扁並在SSRS結合WCF服務的結果集的顯示報告

MessageContract 
    | 
    +-- List<TopLevelDataContract> 

TopLevelDataContract 
    | 
    +-- FirstChildDataContract 
    +-- SecondChildDataContract 
    +-- ThirdChildDataContract 

FirstChildDataContract 
    | 
    +-- FieldOne 
    +-- AnotherField 

SecondChildDataContract 
    | 
    +-- FieldTwo 
    +-- YetAnotherField 

ThirdChildDataContract 
    | 
    +-- FieldThree 
    +-- AndAnotherField 

爲了充分顯示在SSRS這些datacontracts,我們需要把它們壓扁成表格形式,像這樣:

+----------+--------------+----------+-----------------+------------+-----------------+ 
| FieldOne | AnotherField | FieldTwo | YetAnotherField | FieldThree | AndAnotherField | 
+----------+--------------+----------+-----------------+------------+-----------------+ 
... rows of data... 

然而ElementPath表達/ XMLDP查詢來實現,這是我們規避。我們試過下面沒有喜悅:

  1. 獲取的FirstChildDataContract類型的所有 「行」:
 
<ElementPath IgnoreNamespaces="true"> 
    MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{}/FirstChildDataContract 
</ElementPath> 
  1. 這得到所有的孩子,但在原始的XML格式:
 
<ElementPath IgnoreNamespaces="true"> 
    MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{@} 
</ElementPath> 
  1. 這不一樣的(1):
 
<ElementPath IgnoreNamespaces="true"> 
    * 
</ElementPath> 

什麼是正確的ElementPath表達式中使用,如果能夠實現這一目標,?

(旁白:?爲什麼沒有微軟只是使用XPath,這是不是滾動自己幾乎但並非十分樣XPath查詢語言證據充分的,靈活的,)

+0

哇,我甚至不知道你可以將SSRS綁定到WCF。如果你有這麼好的工作,那就好。 SSRS主要由SQL,ODBC,Sharepoint,Raw XML構成。僅將SSRS中的數據源直接放入數據庫中是否存在安全或開銷風險?或者,服務不是直接從數據庫發送數據?我認爲直接在Visual Studio中使用RDLC文件可能是更好的方法,因爲我相信你可以使用WCF並使通用POCO列表傳遞給它。使用SSRS可能會花費很多工作量,但如果其他人回答,我很好奇。 – djangojazz 2013-03-13 16:11:13

+0

沒有使用WCF和SSRS的經驗,但我很好奇地挖掘了一些其他的東西。這樣的方法會對你有用嗎? http://devblog.bardoloi.com/2011/09/using-wcf-web-services-as-data-source.html – 2013-03-18 16:54:53

回答

0

我讀過這

http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

它指出,

多父子層次結構不被支持。在這個例子中,Customer具有訂單和退貨。提供者可能只返回一組。由於訂單層次結構是首先指定的,因此自動派生將將其解析爲骨架。

我不太瞭解SSRS,但我想使用多個數據集作爲一個技巧。可能嗎?