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

SSRS: field shows correct in query but wrong in report preview

我有以下查询:

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

当我在 'Query Design' 中执行它时,我有正确的值:

  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
      ...

但是当我在报告的 table 中添加字段时,预览会在字段之间造成一些混乱:

  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
      ...

如果我从查询(当然还有报表)中删除字段 'Name',我会在查询设计和报表预览中得到正确的值。

注意:真正的查询包括一个 JOIN 并且字段被 table 命名空间引用,但出于可读性原因我将其放出因为我认为没有任何区别。

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

另一种可能的方法是创建一个外部工具,就像描述的那样 here:

  • 转到“工具”>“外部工具”...

  • 添加具有以下设置的新工具:

    • 标题:清除报告数据缓存
    • 命令:“%WinDir%\System32\cmd.exe”
    • 参数: /C DEL /S /Q "$(SolutionDir)*.rdl.data"
    • 检查选项
      • 使用输出window
      • 退出时关闭

现在,只要您想删除报表数据缓存,只需转至“工具”>“清除报表数据缓存”即可。