MySQL + SSRS(SQL 服务器报表生成器)Dataset/Query 参数不起作用

MySQL + SSRS (SQL Server Report Builder) Dataset/Query Parameters not working

我目前正在使用 SQL Server Report Builder 2012 并通过 ODBC 连接器连接到我的 MySQL 数据库,就基本报告而言,一切正常。

但是,我似乎无法使 Query/Dataset 参数按照预期的方式工作。我的查询有多个参数,如下所示(显然 table 和列名称已删除):

现在的问题是,如果我让参数保持原样(@OfMonth、@OfDay、@OfYear)- SSRS 似乎没有绑定从报表生成器的参数对象传递的实际值,我今天对此很有信心我已经正确关联。甚至 preview/query 设计师也不行。

但是,如果我将所有 @XXXX 参数更改为简单的 ? 占位符,它就会神奇地起作用。这对具有多个参数的查询特别构成问题。

这是我正在进行的工作的报表生成器屏幕截图:

我在 Parameter 节点下定义 3 参数对象没有问题。但是,如果我尝试将它们绑定在具有特定 @XXXXX 占位符的数据集属性下,它不起作用,并且报告无法生成数据。但是,如果我将所有 @XXXXX 替换为 ?(所有这些都只是 ?,因此重复),参数将被传递并加载报告。

对于 ODBC 连接,您确实需要使用 ?而不是命名变量。

dba.stackexchange | Pass Parameter - SSRS to MySQL

数据集属性上的参数名称字段应自动填充 Parameter1、Parameter2...以匹配您的查询,但似乎并不总是有效。您可以尝试手动添加它们。由于它在没有你的名字的情况下工作,我认为这个名字实际上并不重要。

当我多次使用一个参数时,我会在查询中声明一个新参数并重新使用新参数,正如@Bacon 提到的:

DECLARE @OfMonth INT

SET @OfMonth = ? 

这样您只需在查询开始时匹配一次。

使用?作为脚本中的变量,然后记住“?”的特定顺序然后使用特定的 order/arrangement of '?'参数,在添加 MySQL 脚本后在参数选项卡中设置它们。

例如。脚本.

Select * 来自表 1 其中 column1 = ? 和 column2 = ?

当您将其粘贴到数据集时,每个“?”将映射到参数选项卡中。 ?参数1 ?参数2

将此更改为您自己的参数,然后就可以了。