如何将设备信息传递给SSRS订阅?

时间:2013-05-17 16:35:29

标签: c# ssrs-2008

我的团队和我,我们正在尝试创建订阅并以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
}

我们无法找到传递设备信息的方法,这是否可行?

了解更多信息:
http://msdn.microsoft.com/en-us/library/microsoft.wssux.reportingserviceswebservice.rsmanagementservice2005.reportingservice2005.createsubscription%28v=SQL.90%29.aspx

1 个答案:

答案 0 :(得分:0)

您无法将DeviceInfo传递给CreateSubscription()方法,但这两种方法中的一种可能会为您解决问题......

  1. 请参阅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>
    
  2. Implementing a Rendering Extension涉及的内容更多,但可以让您获得更多控制权。

  3. 获得新的渲染扩展后,您可以传递这样的名称......

    extensionParams.Add(new ParameterValue
    {
        Name = "RenderFormat",
        Value = "CsvPipeDelimited"
    });