在SQL Server报表生成器中过滤器不工作



我试图在报表生成器3.0中创建一个表格过滤器。我点击表格,选择属性,然后点击过滤器。点击添加,创建我的过滤器:

Expression [SYSTEM_CODE]
Operator =
Value 1005

我没有得到错误消息,但是当我运行报告时,当我知道系统代码有有效数据时,什么也没有显示。无论我选择什么值,当我运行报告时,我都看不到任何东西。如果我将值括在单引号或双引号中也没有关系。这个报告没有分组,所以也没有过滤器。

我在扯我的头发,因为这应该相当简单。

我有一个类似的问题,也许我发现将为您工作。我创建了一个简单的查询来展示我发现的内容(注意这里的Convert语句是有意使用的):

Select getdate() as "MyDate", CONVERT(Decimal(12,0), 1005) As "System_Code"

然后我为System_Code值创建了一个过滤器。请注意Type字段中的Float值是不能更改的。

禁用Type字段截图

当我运行报告时,我得到了这个错误:

不能处理表' Tablix1 '的FilterExpression执行。不能比较系统类型的数据。小数和System.Double。返回的数据类型FilterExpression .

我知道,上面写着十进制到双十进制(我怪微软,因为这也让我很困惑)。发生这种情况是因为这种类型的参数只能处理Integer和Float值。报表生成器不允许更改它们,因为它从数据集推断出这种类型(基于我自己的经验)。如果将查询设置为返回Integer,则过滤器将起作用:

Select getdate() as "MyDate", CONVERT(Integer, 1005) As "System_Code"

然而,检查类型字段仍将被禁用,并可能显示为float。在下拉表达式字段中选择另一个值,然后选择返回到系统代码值,将类型值从Float更改为Integer。

有趣的是,如果你尝试另一个转换数据类型值,即BigInt,你会得到你不能从Int64转换为Float(/叹息微软)。

在搜索了几个小时之后,我能找到的最接近于为什么会发生这种情况的是微软网站上的这个页面,该页面讨论了期望的值是Integer或Float。即使我没有执行Sum函数,效果也是一样的。

Sum Function(报表生成器)

最新更新