我创建了一个执行以下操作的 rs.exe 脚本:
基于文件Report.rdl部署报告。该报表有一个对共享数据源的引用和一个对共享数据集的引用。报表部署到报表服务器/目录。
将报表的数据源设置为报表服务器上的现有共享数据源。数据源部署为/Data Sources/DS。
将报表的数据集设置为报表服务器上的现有共享数据集。数据源部署为/Datasets/DataSet。
该脚本包含以下代码:
Public Sub Main()
Dim definition As [Byte]() = Nothing
Dim warnings As Warning() = Nothing
'Read report from file on disk
Dim stream As FileStream = File.OpenRead("Report.rdl")
definition = New [Byte](stream.Length - 1) {}
stream.Read(definition, 0, CInt(stream.Length))
stream.Close()
'Deploy report
'ItemType, name, folder, overwrite, definition, properties
rs.CreateCatalogItem("Report", "Report", "/", True, definition, Nothing, warnings)
'Update existing report Data Souce reference to Shared Data Source on server
Dim dataSourceRefs(0) As DataSource
Dim dsr As New DataSourceReference
dsr.Reference = "/Data Sources/DS"
Dim ds As New DataSource
ds.Item = CType(dsr, DataSourceDefinitionOrReference)
ds.Name = "DS"
dataSourceRefs(0) = ds
rs.SetItemDataSources("/Report", dataSourceRefs)
'Update existing report DataSet reference to Shared DataSet on server
Dim dataSetRefs(0) as ItemReference
Dim dset as New ItemReference
dset.Name = "DataSet"
dset.Reference = "/Datasets/DataSet"
dataSetRefs(0) = dset
rs.SetItemReferences("/Report", dataSetRefs)
End Sub
听起来您已经成功部署了报告。
因此,主要需要注意的是更新数据源引用和数据集引用的代码片段。需要注意的方法有:
SetItemDataSources更新数据源。
SetItemReferences来更新DataSet。
这是针对一份报告的,因此您需要将代码封装在部署脚本的子例程中,但希望这会对您有所帮助。