使用WebService動態產生DataSet綁定到Reporting Services
轉自:http://tech.sina.com.cn/s/2008-07-01/0833714471.shtml
【IT168技術文檔】
我的步驟是這樣的:
1.首先建立一個WebSerivce,然後寫了一個Web Method:
[WebMethod]public XmlDataDocument GetDataSource(){string strCon;DataSet ds = new DataSet();XmlDataDocument xmlDataDoc;strCon = "Your Connection String";string selectText = "Your Select String";SqlDataAdapter dataAdapter = new SqlDataAdapter(selectText,strCon);try{dataAdapter.Fill(ds);xmlDataDoc = new XmlDataDocument(ds);}catch{xmlDataDoc = null;}finally{strCon = null;ds.Dispose();}return xmlDataDoc;}
我們可以注意到。這裡使用了XmlDataDocument,還記得陸飛文章中提到了XML文檔,我們需要受到手動修改它嗎?其實是不需要的,我們可以通過XmlDataDocument關聯到DataSet產生相應的XML
2.建立一個Reporting Services項目,注意時Reporting Serverices項目,不是Report Viewer控制項
然後在Shared Data Source裡建立一個DataSource,指定Type為XML,Connection String 為你的WebSerivce,比如說 http://localhost/WebService/Service.asmx(你可能需要在IIS中部署WebService)
然後建立一個Report,指定Query String 為:
<Query xmlns="http://Eric.org/"><SoapAction>http://Eric.org/GetDataSource</SoapAction></Query>
然後就可以取得資料了。
過程中,我遇到的一個問題是,如果在VS中建立的預設的WebService Namespace為http://tempuri.org/,Query String檢查就會報錯,你只要更改一個Namespace就可以了(如果說我改成了http://Eric.org)
這樣做的好處顯而易見,就是可以使用Reporting Services的可視化報表設計系統了。