s-s-rS - 如果参数留空,默认显示所有值
Posted
技术标签:
【中文标题】s-s-rS - 如果参数留空,默认显示所有值【英文标题】:s-s-rS - Default to show ALL values if parameter is left blank 【发布时间】:2016-01-27 21:28:12 【问题描述】:我的 s-s-rS 报告显示一个日期范围(2 个参数)和一个名为“MeterNumber”的字段的多选值参数。
我想要的是多选参数的默认值显示所有值,直到用户指定列表中的值之一。
我尝试通过将参数属性中的常规选项卡设置为“允许多个值”,并将可用值和默认值设置为来自同一数据集的相同值字段,但不行。
有什么想法吗?
【问题讨论】:
您是否为@StartDate
和@EndDate
参数设置了默认值?
@alejandrozuleta 是的。 @StartDate 默认为当月的第一天,@EndDate 默认为当月的最后一天。
【参考方案1】:
您可以使用填充参数可用值的相同数据集来填充参数的默认值。
那么默认情况下,当用户第一次打开报表时,所有值都会被选中。
【讨论】:
这就是我拥有当前参数的方式。如果这有帮助,这是我的数据集查询。有问题的参数是 MeterNumber:SELECT AC.MeterNumber, AC.AccountName, AMR.MeterRead, AMR.ReadDate, AMR.CorrectedMMBTU, AMR.AccountID FROM tblAccountMeterRead AMR JOIN tblAccount AC ON AC.AccountID = AMR.AccountID WHERE AMR.ReadDate在@StartDate 和@EndDate 和 AMR.MeterRead '0' 之间 查询无关紧要,如果您使用相同的数据集作为可用值的默认值,则默认情况下应检查所有值。您的问题中没有提到您做错的其他事情。你能添加一些参数属性页面的截图吗?【参考方案2】:如果您的日期开始日期和结束日期为空或为空,您可以在后端指定最小日期和最大日期(请记住 sql 中的最小日期为 1/1/1753 12:00:00 AM
,最大日期为 12/31/9999 11:59:59 PM
,因此您的日期格式应该是这样的)。因此,当它传递您的参数时,它将获取该最小开始日期和最大结束日期内的所有数据。
这就是你将如何在 c# 中分配最小日期时间
DateTime dateStart = SqlDateTime.MinValue.Value;
和最大日期
DateTime dateEnd = SqlDateTime.MaxValue.Value;
【讨论】:
【参考方案3】:数据集中的 MeterNumber 是否有任何空白和/或 null 值?这可能会导致参数值出现问题。因为在你的情况下你需要多个值,所以你不能有空值。只需确保选择了允许空白值 ("") 和允许多个值。然后,确保 MeterNumber 列中没有 NULL 值。如果这样做,则转换为空字符串,即ISNULL(AC.MeterNumber, '') as MeterNumber
【讨论】:
【参考方案4】:@Byronyk 遇到了完全相同的问题,但刚刚意识到问题出在哪里(也知道这篇文章很老了,这更适合那些偶然发现的人!)
我发现的问题是可用值中的值比默认值中的值多一个,因此它丢弃了默认选择。
一旦我意识到并添加了它,就会再次选择默认值。
我怀疑这是问题所在,因为日期正常,问题出在“MeterNumber”参数中
【讨论】:
以上是关于s-s-rS - 如果参数留空,默认显示所有值的主要内容,如果未能解决你的问题,请参考以下文章