复制步骤
通过OLE DB连接到SQL Server 2000数据源来设置数据源。由于SSRS 2012不支持SQL Server 2000。
然后设置数据集。使用报表选项中嵌入的数据集。我选择查询类型。然后我在下面提出查询。
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
当我点击刷新字段时,我得到定义查询参数窗口,我按下确定然后我得到错误。
无法为查询创建字段列表。验证您是否可以连接到数据源并且查询语法是否正确。
详细说明,
必须在' @ P1'中声明变量
我做错了什么?该参数已定义。
答案 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