2016-08-03 79 views
1

我正在創建一個應用程序將SSRS .rdl文件上載到我們的報表服務器。這是使用ReportingService2010()c#如何編程指定指定的數據源到SSRS .RDL文件? ReportingService2010()

.RDL文件的上載工作正常。

接下來,應用程序應爲指定的數據源分配上傳的.RDL文件,但此元素失敗。我的代碼如下所示:

DataSource[] dsarray = new DataSource[1]; 

string DSName = "MyDataSource"; 

DataSourceReference reference = new DataSourceReference(); 

DataSource ds = new DataSource(); 

dsarray[0] = new DataSource(); 

reference.Reference = "/" + DSName; 

ds.Item = reference; 
ds.Name = "/" + DSName; 

dsarray[0] = ds; 

rs.SetItemDataSources("/" + location + "/" + filename, dsarray); 

我得到以下錯誤消息:

出現下列錯誤:

數據源 '/ MyDataSource' 不能被發現。 Microsoft.ReportingServices.Diagnostics.Utilities.DataSourceNotFoundException: 無法找到數據源'/ MyDataSource'。

我很確定我非常接近,但我不能得到它的工作。我已經嘗試了許多不同的解決方案&廣泛地在線查看(包括堆棧溢出!),但我找不到與我的問題相關的示例。大多數討論涉及ReportingServices2005。

我應該提到我的數據源駐留在根文件夾'/'中,因爲這是一個開發服務器。

我對c#比較缺乏經驗,所以也許我缺少一些明顯的東西。 任何信息/想法的將非常感激,非常感謝提前。

+0

檢查權限「數據來源「並將它們與報告的權限進行比較。他們匹配嗎? – tgolisch

+0

不幸的是,他們確實匹配。我非常有信心這個問題是基於代碼的(儘管我可能是錯的)。 謝謝你的建議。 –

+0

這篇SO文章的代碼非常類似於您的代碼,但您的文章缺少一些細微的細節。 http://stackoverflow.com/questions/16083951/ssrs-rdl-mapping-datasources-programmatically – tgolisch

回答

1

經過大量研究&失敗的嘗試我終於偶然發現了一個解決方案。

下面的代碼將分配從下拉ddDataSourceSelect選擇一個數據源,給你所需的SSRS .rdl文件:

string DSName = ddDataSourceSelect.SelectedValue.ToString(); 

List<ReportService2010.ItemReference> itemRefs = new List<ReportService2010.ItemReference>(); 
ReportService2010.DataSource[] itemDataSources = rs.GetItemDataSources("/" + location + "/" + filename); 

foreach (ReportService2010.DataSource itemDataSource in itemDataSources) 
{ 
    ReportService2010.ItemReference itemRef = new ReportService2010.ItemReference(); 
    itemRef.Name = itemDataSource.Name; 

    itemRef.Reference = "/" + DSName; 

    itemRefs.Add(itemRef); 
} 

rs.SetItemReferences("/" + location + "/" + filename, itemRefs.ToArray()); 

而不是簡單地嵌入數據源,這將重置數據源。我認爲關鍵的變化是使用'SetItemReferences()'而不是'SetItemDataSources()'。我不會猜到這一點。

非常感謝以下職位他們的解決方案,讓我來解決這個問題:

Deploying SSRS RDL files from VB.Net - Issue with shared datasources

我希望這個解決方案可以幫助其他程序員:)