【问题标题】:Report Builder - How to allow Multiple Selection allowed parameter drop-down to accept Null报表生成器 - 如何允许多项选择允许的参数下拉列表接受 Null
【发布时间】:2017-08-12 00:42:08
【问题描述】:

我根据我在 SQL Server 2014 上编写的查询在 VS Report Builder 上创建了一个报告。

报告有两个参数:

  1. 报告应运行的日期。
  2. 要从报告中排除的代理。

查询具有日期和代理不在的条件(从下拉列表中选择的代理)

有时,没有要排除的代理。因此,即使没有选择代理,报告也应该运行。

当至少选择了 1 个代理时,报告运行良好。但是当没有选择代理时根本不运行。给我一条错误消息,“请选择参数‘选择代理’的值”。

在参数属性中,我选择了“文本”作为数据类型。我还检查了'允许空白值(“”)'和'允许多个值'。

在“可用值”选项卡中,我选择了“从查询中获取值”,因为我有一个单独的数据集,可以从单独的表中提取代理名称的记录。

在默认值选项卡中,我选择了无默认值。也许,我应该选择“指定值”。但是我应该将值指定为什么?因为,当我选择“指定值”并添加(空)值时,我收到一条错误消息,提示“为参数指定了空默认值,但参数不允许空值。”我什至尝试将一个不起眼的“1111111”指定为默认值。仍然收到选择代理的错误消息。

【问题讨论】:

标签: reporting-services parameters reportbuilder


【解决方案1】:

处理此问题的一个好方法是在可用值中添加一个选项,该选项可用于跳过该参数。您可以通过在从中填充参数的查询中使用 Union All 来添加它。对于标签,您可以使用“N/A”之类的内容,并且该值可以为 NULL。这样,您将能够将其指定为默认值,并且用户将能够在没有适当的实际值时选择它。最后,听起来您可能已经这样做了,但请确保您的查询将处理为 NULL 的参数并仍然为您提供正确的结果。

编辑:

SELECT AgentID, AgentName
FROM (
    SELECT DISTINCT AgentID, AgentFirstName + ' ' + AgentLastName [AgentName] 
    FROM AgentStats 
    WHERE MidnightStartDate >= dateadd(day, -60, getdate()) AND MidnightStartDate < getdate()
    UNION ALL
    SELECT 'N/A', NULL 
) A
ORDER BY AgentName

联合将NULL 值添加到结果中。这一切都包含在一个子查询中,因此您仍然可以使用ORDER BY 子句。

【讨论】:

  • 谢谢。我正在考虑这样做,但还没有这样做,因为我认为可能有一种更简单的方法可以在报表生成器本身内完成。 >>> 我确实在查询中添加了一个允许 IS NULL 的选项。但是下拉菜单不允许它达到这一点。 >>> 我将尝试在数据集中为代理列表添加一个空值。
  • 我尝试将值插入临时表,但我收到一个错误,即该临时表已存在于数据库中。 >>>> 请你告诉我如何使用 Union All 来增加额外的价值?
  • 如果您发布现有查询,我可以向您展示如何将 NULL 值合并到它。
  • 谢谢@StevenWhite >>>> SELECT DISTINCT AgentID, AgentFirstName + ' ' + AgentLastName [AgentName] 从 AgentStats WHERE MidnightStartDate >= dateadd(day, -60, getdate()) AND MidnightStartDate
猜你喜欢
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 2018-09-13
  • 1970-01-01
相关资源
最近更新 更多