我正在Visual Studio 2008中构建一个包含大量multivalue parameters的报告,但它工作得很好,但我希望在报告输出时将“(全选)”选项作为默认值打开。
我可以使用某种表达式或SQL代码来实现这一目标吗?或者每次我想要运行报告时,是否每次都需要选择“(全选)”?
答案 0 :(得分:87)
尝试设置参数“默认值”以使用与“可用值”相同的查询。实际上,它将每个“可用值”作为“默认值”提供,并自动选中“全选”选项。
答案 1 :(得分:15)
将数据集与默认值一起使用是一种方法,但必须使用查询“可用值”和“默认值”,如果值在“可用值”选项卡中进行了硬编码,则必须将默认值定义为表达式。图片应该解释一切
创建参数(如果没有自动创建)
定义值 - 错误的方式示例
定义值 - 正确的方式示例
设置默认值 - 您必须定义所有默认值,以反映可用值"全选"默认情况下,如果您未定义所有,则默认情况下仅选择定义的那些。
结果
数据类型的一张图片:Int
答案 2 :(得分:8)
如果您有空值则不起作用。
你可以通过修改你的select语句将某些东西变成空值来解决这个问题:
phonenumber = CASE
WHEN (isnull(phonenumber, '')='') THEN '(blank)'
ELSE phonenumber
END
答案 3 :(得分:5)
接受的答案是正确,但不完整。
为了使Select All
成为默认选项,可用值数据集必须至少包含2列:value和label。他们可以返回相同的数据,但他们的名字必须不同。然后,默认值数据集将使用值列,然后Select All
将成为默认值。如果数据集仅返回1列,则在参数的下拉列表中仅选择最后一个记录的值。
答案 4 :(得分:0)
添加E_8的回答。
如果你有空字符串,这不起作用。
您可以通过在SQL中修改select语句或在SSRS数据集中修改查询来解决此问题。
Select distinct phonenumber
from YourTable
where phonenumber <> ''
Order by Phonenumber
答案 5 :(得分:0)
效果更好
CREATE TABLE [dbo].[T_Status](
[Status] [nvarchar](20) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'Active')
GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'notActive')
GO
INSERT [dbo].[T_Status] ([Status]) VALUES (N'Active')
GO
DECLARE @GetStatus nvarchar(20) = null
--DECLARE @GetStatus nvarchar(20) = 'Active'
SELECT [Status]
FROM [T_Status]
WHERE [Status] = CASE WHEN (isnull(@GetStatus, '')='') THEN [Status]
ELSE @GetStatus END
答案 6 :(得分:-4)
通过使用如下文本查询创建数据集很容易实现:
SELECT 'Item1'
UNION
SELECT 'Item2'
UNION
SELECT 'Item3'
UNION
SELECT 'Item4'
UNION
SELECT 'ItemN'
查询应返回可以选择的所有项目。