sql - SSRS 给我一个错误,但在数据 View 中工作

标签 sql reporting-services

正在 SSRS 2005 中处理查询。该查询在数据 View 中有效,但在预览中却失败了。这就是我所拥有的:

SELECT 
      TOP(cast(@N as integer))  
      Date, 
      StartItem, 
      MasterItem, 
      SubItem, 
      SubItemDescription, 
      Quantity, 
      NetQuantity, 
      UnitOfMeasure, 
      BomLevel, 
      Cost, 
      Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END) AS TotalSumCost
 FROM         
      Bom AS a
 GROUP BY 
      Date, StartItem, MasterItem, SubItem, SubItemDescription, Quantity, NetQuantity,       UnitOfMeasure, BomLevel, Cost, 
                        Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END)
 ORDER BY TotalSumCost DESC

我得到的错误是“查询参数“@N”的值表达式引用了不存在的报告参数“N”。我的报告参数中有 N 设置。请参见下图。

enter image description here

最佳答案

你必须将其命名为 N,我看到 RowsReturned。

此外,如果您稍后在此过程中定义该参数,则在某些情况下,尤其是在 03 和 05 (Visual Studio) 中,该参数不会被选取。 右键单击您的报告,然后在 XML 查找参数部分中选择“查看代码”,并确保它在那里。它看起来像这样:

 <Query>
        <DataSourceName>dsTKExpenseReports</DataSourceName>
        <CommandType>StoredProcedure</CommandType>
        <CommandText>rptExpenseReportReasons</CommandText>
        <QueryParameters>
          <QueryParameter Name="@ExpenseReasonID">
            <Value>=Parameters!ExpenseReasonID.Value</Value>
          </QueryParameter>
          <QueryParameter Name="@Reimbursable">
            <Value>=Parameters!Reimbursable.Value</Value>
          </QueryParameter>
          <QueryParameter Name="@RequiresDesc">
            <Value>=Parameters!RequiresDesc.Value</Value>
          </QueryParameter>
        </QueryParameters>
      </Query>

注意查询参数部分,确保您的查询参数部分同时具有 Item 和 RowsReturned。 并将参数名称更改为“N”,或者将 SQL 或存储过程更改为值“RowsReturned”。它们应该始终匹配。您的代码应如下所示:

SELECT 
      TOP(cast(@RowsReturned as integer))  
      Date, 
      StartItem, 
      MasterItem, 
      SubItem, 
      SubItemDescription, 
      Quantity, 
      NetQuantity, 
      UnitOfMeasure, 
      BomLevel, 
      Cost, 
      Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END) AS TotalSumCost
 FROM         
      Bom AS a
 GROUP BY 
      Date, StartItem, MasterItem, SubItem, SubItemDescription, Quantity, NetQuantity,       UnitOfMeasure, BomLevel, Cost, 
                        Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END)
 ORDER BY TotalSumCost DESC

顺便说一句,您不正确地使用了GROUP BY子句,您只是列出了分组依据中的所有列以获得预期结果。这可能会在路上咬你一口。正确的方法是使用别名查询,然后是别名中的组...:

SELECT 
      n.Blah,
      a.Blah
FROM
      MyTable
INNER JOIN
 (
  SELECT...GROUP BY...
 ) n

关于sql - SSRS 给我一个错误,但在数据 View 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932096/

相关文章:

jquery - MS Access 转换

c# - 生成 Reporting Services 2005 PDF 报告并将其存储在磁盘上

reporting-services - "Report item not linked to a dataset"...但它是

php - 比较 SQL 语句 if else 样式

mysql - 新表有问题,无法将默认值定义为 CURRENT_TIMESTAMP,但在我的本地环境中我可以

sql-server - 如何将 SSRS 报告参数设置为可选,即 SSRS 2005 中的非强制字段

arrays - SSRS Reporting Services - 字符串中的粗体字

mysql - 使用 SQL 查询过滤数据集

mysql - SQL "Truncated incorrect INTEGER value"错误

mysql - 在不丢失数据的情况下更改数据库列名称及其类型