SSRS: 查询中字段正确但在报表预览中错误

10

我有以下查询:

SELECT TOP ( 10 )
        EMPLOYEE ,
        NAME ,
        SUM(QTYFINISHED) AS QTY ,
        SUM(HOURS) AS REALTIME ,
        SUM(PROCESSTIME * QTYFINISHED / PROCESSQTY / 60) AS CALCTIME ,
        SUM(PROCESSTIME * QTYFINISHED / PROCESSQTY / 60) / SUM(HOURS) AS EFFI
FROM    EMPLOYEE
GROUP BY EMPLOYEE ,
         NAME
ORDER BY Eficience DESC

当我在“查询设计”中执行它时,我得到了正确的值:

  Employee  Name     QTY     REALTIME    CALCTIME    EFFI
      2     Peter    10        10           5         0,5
      3     John     10        10           10         1
      4     Thomas   10        12           9         0,75
      ...

但是当我在报表中的表格中添加字段时,预览会在字段之间出现一些混乱:

  Employee  Name     QTY     REALTIME    CALCTIME    EFFI
      2     10        10           5          0,5    #Error
      3     10        10           10          1     #Error
      4     10        12           9          0,75   #Error
      ...
如果我从查询中删除“名称”字段(当然,还要从报告中删除),则在查询设计和报告预览中得到正确的值。
注:实际查询包括JOIN,并且字段是使用表命名空间引用的,但出于可读性原因,我省略了它,因为我不认为会有任何区别。

1
显然,字段向左移动了一个位置。我猜你需要更新SSRS数据集以反映查询的当前输出。 - Thorsten Dittmar
我的错!删掉了.rdl.data文件,现在它可以工作了。对于这个愚蠢的问题我很抱歉:( 请添加答案以便您获得积分;) - HEDMON
3
我发现,如果你点击报告页面上的刷新图标,它会重新加载缓存数据,避免了你删除文件的麻烦。 - Joe C
2个回答

25

您必须在项目文件夹中删除filename.rdl.data。这是SSDT的一个功能。删除rdl.data文件后,它将在下一次查看预览时使用正确的查询创建一个新文件,并将删除#ERROR。


3
我认为它是作为一个功能而设计的。如果你有一个长时间运行的查询,你可以预览报告多次而不必每次都运行查询,这很方便。不幸的是,它并不直观,直到我学会了它的工作原理之前,它确实让我感到困惑。 - Joe C
2
哦,我明白了,我会修改我的答案以反映这一点。 - Azuraith
2
我也遇到了同样的错误,但是我通过相同的方法解决了它。非常感谢! - Sandy

2
另一种可能的方法是创建一个外部工具,就像在这里描述的那样,这将使未来的事情更加容易:
  • 转到“工具”>“外部工具…”

  • 使用以下设置添加一个新工具:

    • 标题:清除报表数据缓存
    • 命令:"%WinDir%\System32\cmd.exe"
    • 参数:/C DEL /S /Q "$(SolutionDir)*.rdl.data"
    • 选中以下选项
      • 使用输出窗口
      • 退出时关闭

External Tool

现在,每当你想要删除报告数据缓存时,只需转到“工具”>“清除报告数据缓存”。

How to access


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接