LocalReport版本11.0.0.0无法理解2008年报表定义架构中的报表

时间:2017-10-09 03:13:13

标签: c# reporting-services localreport

我正在尝试将报表从rdl转换为rdlc以通过LocalReport呈现为Word文件。除了2008年的报告,每个2010年架构版本报告都能正常运行。

使用2008年报告,LocalReport只会呈现无数据文件而不会出现任何错误或警告。调试项目时,我看到所有DataSet都添加了正确的名称作为报表文件中的DataSet定义。并且所有DataSet都需要数据。

我已经尝试过不向LocalReport.DataSources添加任何DataSet,但报告只是渲染成功而没有数据,而与其他工作报告一样,它会抛出异常“无法为数据集创建数据读取器'[数据集名称]' ”

这是我的代码:

LocalReport localReport = new LocalReport();
localReport.ReportPath = localReportPath;
localReport.SubreportProcessing += LocalReport_SubreportProcessing;

localReport.DataSources.Clear();
//Add datasource
foreach (var ds in report.ReportDataSets.Where(x => localReport.GetDataSourceNames().Contains(x.DataSetName)))
        {
            localReport.DataSources.Add(new ReportDataSource(ds.DataSetName, ds.Data));
        }

localReport.Refresh();
//Add parameters
List<Microsoft.Reporting.WinForms.ReportParameter> paramaterList = new List<Microsoft.Reporting.WinForms.ReportParameter>();
foreach (var parammeter in report.ReportParameters)
        {
            Microsoft.Reporting.WinForms.ReportParameter param = new Microsoft.Reporting.WinForms.ReportParameter()
            {
                Name = parammeter.Name
            };
            param.Values.AddRange(parammeter.Value.ToString().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
            paramaterList.Add(param);
        }

localReport.SetParameters(paramaterList.ToArray());
const string devInfo = @"<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>";
Microsoft.Reporting.WinForms.Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
var bytes = localReport.Render(format, devInfo, out mimeType, out encoding, out extension, out streamids, out warnings);
var outputPath = Path.GetTempPath();

if (!Directory.Exists(outputPath))
        {
            Directory.CreateDirectory(outputPath);
        }
 using (var fileStream = File.Create(outputPath + @"\" + report.ReportName + "." + extension, bytes.Length))
        {
            fileStream.Write(bytes, 0, bytes.Length);
            fileStream.Close();
        }

有没有人见过这个?

我完全不明白为什么?请帮助我,我已经坚持了一个星期。

0 个答案:

没有答案