【问题标题】:Filter Not Working in SQL Server Report Builder筛选器在 SQL Server 报表生成器中不起作用
【发布时间】:2016-08-15 14:43:45
【问题描述】:

我正在尝试在 Report Builder 3.0 中的 tablix 上创建过滤器。我单击 Tablix,选择属性,然后单击过滤器。点击添加并创建我的过滤器:

Expression [SYSTEM_CODE]
Operator =
Value 1005

我没有收到错误消息,但是当我运行报告时,当我知道该系统代码有有效数据时,没有显示任何内容。我选择什么值都没有关系,当我运行报告时我什么也看不到。我是否将值括在单引号或双引号中也没关系。此报告没有分组,因此也没有过滤器。

我正在拔头发,因为这应该相当简单。

【问题讨论】:

  • 几个小问题:该列是否包含任何空值?列的数据类型是什么(int 或 string),过滤器的数据类型是否在其下拉列表中正确设置?
  • 无空值,数据类型自动在下拉列表中选择文本,并在我选择 system_code 字段时显示为灰色。
  • 系统代码是否有任何前导或尾随空格?您可能会尝试的另一件事是刷新缓存的数据集。
  • 测试空格之类的快速方法是将过滤器更改为 Like *1005*。实际上,您可以从 Like * 开始,查看过滤器是否有某些内容已损坏句号,然后添加字符,直到过滤掉的内容超出您的预期。

标签: sql-server reporting-services report


【解决方案1】:

我遇到了类似的问题,也许我发现的内容对你有用。我创建了一个简单的查询来向您展示我的发现(注意 Convert 语句在这里是有意的):

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

然后我为 System_Code 值创建了一个过滤器。请注意您无法更改的类型字段中的浮点值。

Screen shot of disabled Type field

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

不能对 tablix 'Tablix1' 的 FilterExpression 进行处理 执行。无法比较 System.Decimal 和类型的数据 System.Double。请检查返回的数据类型 过滤器表达式。

我知道,它说 Decimal to Double (我责怪微软,因为这也让我感到困惑)。发生这种情况是因为这种类型的参数只能处理 Integer 和 Float 值。报表生成器不允许您更改它们,因为它从数据集中推断出这种类型(根据我自己的经验)。如果您将查询设置为返回整数,则过滤器将起作用:

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

但是,检查类型字段仍将被禁用,并且可能显示为浮动。在下拉表达式字段中选择另一个值,然后选择回 System Code 值会将 Type 值从 Float 更改为 Integer。

有趣的是,如果您尝试另一个 Convert 数据类型值,即 BigInt,您会发现无法从 Int64 转换为 Float(/sigh Microsoft)。

经过数小时的搜索,我最接近了解为什么会发生这种情况的是微软网站上的这个页面,它讨论了预期的值是整数还是浮点数。尽管我没有执行 Sum 函数,但效果看起来是一样的。

Sum Function (Report Builder)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多