【问题标题】:VS 2008 Reporting Services report definition generationVS 2008 Reporting Services 报表定义生成
【发布时间】:2010-01-05 17:05:17
【问题描述】:

我正在使用 VS 2008 来生成 Reporting Services 报表定义。问题是,每当我尝试从流中加载报告定义时,都会出现错误。

我有以下代码:

var loaded = XDocument.Load(filePath);
LocalReport ret = new LocalReport();
using (var stream = new MemoryStream())
{
    var writer = new StreamWriter(stream);
    loaded.Save(writer);
    var ret = new LocalReport();
    ret.LoadReportDefinition(stream);

    var r= ret.GetParameters();
}

当最后一行执行时,它会抛出 LocalProcessingException 并带有以下文本:

{"The report definition is not valid.  Details: O elemento raiz está em falta."}

细节转化为“缺少根元素”。

可能出了什么问题?

编辑: XML 定义是正确的。问题出在加载定义之后的某个地方。

【问题讨论】:

    标签: visual-studio reporting-services reporting reportviewer


    【解决方案1】:

    在再次读取之前,您必须将流重置回位置 0。否则LoadReportDefinition 将从流的末尾开始读取。

    var loaded = XDocument.Load(filePath);
    LocalReport ret = new LocalReport();
    using (var stream = new MemoryStream())
    {
        var writer = new StreamWriter(stream);
        loaded.Save(writer);
        writer.Close();
        writer.Position = 0;
        var ret = new LocalReport();
        ret.LoadReportDefinition(stream);
    
        var r= ret.GetParameters();
    }
    

    请参阅 this page 上的 CreateMemoryStream()

    【讨论】:

    • 感谢答案。我已经有一段时间没有接触过那个项目了,但是当我有机会时,我会尝试一下。
    【解决方案2】:

    您是否尝试过将 MemoryStream 保存到单独的文件中并将其与原始文件进行比较?

    【讨论】:

    • 是的,文件完全一样。这就是为什么我不明白。
    • 您介意共享文件吗? LoadReportDefinition 通常工作正常,我从未听说过它有任何问题。文件中可能有一些稍微错误的格式,导致混淆。
    • 我通过创建一个临时文件并加载它解决了这个问题。这是文件:megaupload.com/?d=I9MJKZTF
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多