SSRS 2012与sql server 2000数据源的问题

时间:2014-07-04 10:39:23

标签: sql-server reporting-services

复制步骤

  1. 通过OLE DB连接到SQL Server 2000数据源来设置数据源。由于SSRS 2012不支持SQL Server 2000。

  2. 然后设置数据集。使用报表选项中嵌入的数据集。我选择查询类型。然后我在下面提出查询。

    SELECT A.*
    FROM TableA AS A
    LEFT JOIN 
         (SELECT  
             TableB.RES_ID, Max(TableB.WeekCommencing) AS MaxOfWeekCommencing
          FROM TableB
          GROUP BY TableB.RES_ID
          HAVING ((
                  (Max(TableB.WeekCommencing)) >= @P1
                  Or 
                  (Max(TableB.WeekCommencing)) >= @P1 
                  Or 
                  (Max(TableB.WeekCommencing)) >= @P1))
         ) B ON A.RES_ID=B.RES_ID
    
  3. 当我点击刷新字段时,我得到定义查询参数窗口,我按下确定然后我得到错误。

      

    无法为查询创建字段列表。验证您是否可以连接到数据源并且查询语法是否正确。

    详细说明,

      

    必须在' @ P1'中声明变量

    我做错了什么?该参数已定义。

2 个答案:

答案 0 :(得分:1)

如果这是一个ole DB数据源,@ param将无效。这仅适用于Sql本机客户端。因此,在查询中使用 ?? 作为参数。

答案 1 :(得分:1)

您可以在数据集代码中使用局部变量。这有助于报告参数与数据集参数之间的映射。

如果您有许多参数或多次使用参数,这将非常有用。

Declare @P1 int
Declare @P2 int

Set @P1 = ?
Set @P2 = ?
;

SELECT A.*
FROM TableA AS A
LEFT JOIN 
     (SELECT  
         TableB.RES_ID, Max(TableB.WeekCommencing) AS MaxOfWeekCommencing
      FROM TableB
      GROUP BY TableB.RES_ID
      HAVING ((
              (MAX(TableB.WeekCommencing)) >= @P1
              OR
              (MAX(TableB.WeekCommencing)) >= @P1 
              OR 
              (MAX(TableB.WeekCommencing)) >= @P2))
     ) B ON A.RES_ID=B.RES_ID
相关问题