有想到如何SSRS工作和你有多少時間要投資它弄亂了一些東西。
一,你可以遍歷根,但我非常懷疑你的意思。從根目錄可以添加項目,無論它們是目錄還是報告。另外,您可以直接將參數添加到Rest URI以呈現報告,您也可以輸出一個值。例如:
地址根的主要組成部分:
http:// <server>/ReportServer/Pages/ReportViewer.aspx?
目錄的路徑:
%2fTest
路徑報告(標記它的同名笑)
%2fTest
什麼用它來做? (使其)
&rs:Command=Render
放在一個paremeter並執行它,以及
&Test=Value
把它放在一起(是的,我打電話給我的參數測試呢!):
http:// <servername>/ReportServer/Pages/ReportViewer.aspx?%2fTest%2fTest&rs:Command=Render&Test=Value
II 。你有一個數據庫,你可以查詢遍歷的東西,但我相信MS不會很好地記錄它。通常它是在您安裝SSRS的任何服務器上名爲「ReportServer」的SQL Server數據庫。一般來說,大多數項目都在表格'dbo.Catalog'中,其中'Type'爲2。你可以從他們那裏得到他們的信息甚至參數。
三,你想全力鑽進.NET並直接與服務交談?你也可以那樣做。你需要的兩個主要業務,雖然要做到這一點:
A: http://<Server Name>/reportserver/reportservice2010 (gets info on existing items on server)
B: http:// <Server Name>reportserver/reportexecution2005 (gets info for in code creating reports to types directly in code)
我對這個出口在這裏另一個線程:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx;但你也可能會獲得信息。一旦你創建了代理類(或者對Web服務進行了引用),你可以像.NET一樣使用代碼。這些服務完成所有的魔術,所以如果沒有它們,你無法在SSRS中真正建模。基本上我創建了一個類,通過'SERVER'你需要引用類'http:///ReportServer'。
private ReportingService2010 _ReportingService = new ReportingService2010();
private ReportExecutionService _ReportingExecution = new ReportExecutionService();
private string _server { get; set; }
public ReaderWriter(string server)
{
_server = server;
_ReportingService.Url = _server + @"/ReportService2010.asmx";
_ReportingService.Credentials = System.Net.CredentialCache.DefaultCredentials;
_ReportingExecution.Url = _server + @"/ReportExecution2005.asmx";
_ReportingExecution.Credentials = System.Net.CredentialCache.DefaultCredentials;
}
public List<ItemParameter> GetReportParameters(string report)
{
try
{
return _ReportingService.GetItemParameters(report, null, false, null, null).ToList();
}
catch (Exception ex)
{
MessageBox.Show("Getting Parameter info threw an error:\n " + ex.Message);
return new List<ItemParameter> { new ItemParameter { Name = "Parameter Not Found" } };
}
}
public List<CatalogItem> GetChildInfo(string dest)
{
try
{
return _ReportingService.ListChildren("/" + dest, false).ToList();
}
catch (Exception ex)
{
MessageBox.Show("Getting Child info of location threw an error:\n\n" + ex.Message);
return new List<CatalogItem> { new CatalogItem { Name = "Path Does Not exist", Path = "Path Does not exist" } };
}
}
使用Web服務不是問題。我知道我可以從中檢索報告對象列表和參數列表。我正在尋找的是讓Web服務使用我提供給Web服務的值爲我構建該URI的方法,但似乎並不存在。我知道我可以自己建立URI,但是在我嘗試不重新發明輪子之前我寫道。 –
您可以從根目錄遍歷列表,或者您可以在.NET中獲得'Catalog'項目的列表。在上面的第三部分中,'GetChildInfo'的第二個方法返回目錄或項目的數組,就像DOS中的'dir'命令一樣。通常,我要麼在數據庫中查詢'ReportServer'的信息,要麼使用實現我的類的WPF應用程序來實現我的方法,以獲取有關報告或其參數的信息。要獲得Web服務的路徑,只需將根部旁邊的部分拼湊起來,並將'&'加上命令放到最後。 – djangojazz