我的团队和我,我们正在尝试创建订阅并以CSV格式导出报告,但我们需要更改字段分隔符来自"," (这是默认值)。我们如何以编程方式(C#)将设备信息传递给SSRS(2008)订阅?
我们有一个ReportingServices2005的Web引用。这是我们代码的例子:
string report = "Insert report here";
string desc = "A description";
string eventType = "TimedSubscription";
string matchData = "<ScheduleDefinition>...</ScheduleDefinition>";
string RenderFormat = "CSV";
ParameterValue[] reportParameters = GetReportParameters();
var extensionParams = new List<ParameterValue>();
extensionParams.Add(new ParameterValue
{
Name = Constants.EXTENSIONPARAMRENDER_FORMAT,
Value = RenderFormat
});
extensionParams.Add(new ParameterValue
{
Name = Constants.EXTENSIONPARAMFILENAME,
Value = FileName
});
// Insert more params here...
ExtensionSettings extSettings = new ExtensionSettings();
extSettings.ParameterValues = extensionParams.ToArray();
extSettings.Extension = Constants.EXTENSIONREPORTSERVERFILESHARE;
try
{
ReportingService2005 rs = new ReportingService2005();
rs.CreateSubscription(
report, extSettings, desc, eventType, matchData, reportParameters);
}
catch (SoapException e)
{
// Handle the exception
}
我们无法找到传递设备信息的方法,这是否可行?
答案 0 :(得分:0)
您无法将DeviceInfo
传递给CreateSubscription()
方法,但这两种方法中的一种可能会为您解决问题......
请参阅Customizing Rendering Extension Parameters in RSReportServer.Config以创建默认“CSV”扩展程序的新版本,您可以在其中配置所需的DeviceInfo
。所以你可以在配置文件中添加这样的部分......
<Extension Name="CsvPipeDelimited" Type="Microsoft.ReportingServices.Rendering.DataRenderer.CsvReport,Microsoft.ReportingServices.DataRendering">
<Configuration>
<DeviceInfo>
<Extension>txt</Extension>
<FieldDelimiter>|</FieldDelimiter>
<NoHeader>false</NoHeader>
</DeviceInfo>
</Configuration>
</Extension>
Implementing a Rendering Extension涉及的内容更多,但可以让您获得更多控制权。
获得新的渲染扩展后,您可以传递这样的名称......
extensionParams.Add(new ParameterValue
{
Name = "RenderFormat",
Value = "CsvPipeDelimited"
});