0

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

4

1 回答 1

0

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

  1. 请参阅在 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. 实现渲染扩展涉及更多,但可以让您获得更多控制权。

一旦你有了新的渲染扩展,你可以像这样传递名称......

extensionParams.Add(new ParameterValue
{
    Name = "RenderFormat",
    Value = "CsvPipeDelimited"
});
于 2013-05-17T17:33:21.960 回答