gpt4 book ai didi

reporting-services - 级联文本参数,将允许选择日期时间日历或预填充字段

转载 作者:行者123 更新时间:2023-12-01 22:54:45 27 4
gpt4 key购买 nike

好的,这是一个有趣的部分,也是我迄今为止所做的工作的一部分,到目前为止,有些人声称由于 SSRS 处理默认值的默认行为而无法做到这一点。但是我已经走了很远,我很好奇我是否可以一路走下去。

问题:我想要做的是让用户在“本月”、“上个月”等语句之间获得 PRE DEFINED ......然后用该字符串引用的 DateTime 填充一个变量,但用户可以更改它稍后,它应该根据父字符串刷新,否则让用户在 SINGLE DATETIME PARAMETER 上选择不同的字符串。

首先,让我们来看看什么可行,什么不可行:

I. 我将数据集绑定(bind)到此,缩写形式为:

select 
'Today' as Description
, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) BegDt
union
select
'ThisMonth'
, Dateadd(month, Datediff(month, 0, getdate()), 0)

二、然后我设置了一个名为“DatesPeriod”的参数,然后在选择“从查询中获取值”时添加“描述”作为参数的字段和标签。用户现在可以从下拉列表中选择“今天”或“本月”。

三、我现在设置另一个数据集并将其标记为“DatesSelected”。出于解释的目的,我将保持简单,只嵌套第一部分的数据集,但列出一个 where 子句。本质上,我再次使用相同的数据集,但一次强制返回一行。
select *
from
(
select
'Today' as Description
, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) BegDt
union
select
'ThisMonth'
, Dateadd(month, Datediff(month, 0, getdate()), 0)
) as x
where x.Description = @DatesPeriod

四。我定义了另一个名为“Start”的参数,它是 DateTime,并从上面的数据集中获取它的值以及它的默认值。现在,当用户更改第一个文本变量时,相关的 DateTime 变量也会更改。我已将文本选择本质上绑定(bind)到一个日期时间变量,该变量现在的范围仅限于描述的可用值和默认值。这将范围限制为一个,强制传递默认值。

V. 这还不够,我希望用户能够随意选择免费日期范围。当前设置不允许使用此日期选择器,因为范围受 AVAILABLE VALUES 限制。但是,需要这样做才能将文本传递给将按需刷新的日期时间变量(当它在运行报表时更改时,而不仅仅是第一次)。因此,我创建了另一个 DateTime 参数并将其命名为“UserStart”,并将默认值设为“[@Start]”以将其默认值作为“Start”的依赖项。

六、我现在创建了一个名为“Choice”的测试数据集,以直观地看到我的数据也按照我的意愿呈现。
 Select isnull(@UserStart, @Start) as Choice

七。我创建了一个表格对象并将其放在我的报告中并放入我上面列出的单个单元格中,以查看当用户用他们自己的选择(来自 SSRS 提供的日历显示)覆盖默认的“开始”值时,它将展示。

因此,此时一切都需要注意。您需要显示两个日期时间参数,以允许最终用户选择默认设置或选择他们自己的设置。如果我尝试隐藏第二个参数“开始”,它只会在第一次运行报告时设置默认值,每次更改第一个参数时我都想要它。如果它是可见的,它工作正常,但对于功能,我不希望用户看到就他们而言是相同的两个报告参数。我尝试了自定义代码来返回“开始”参数,创建另一个数据集,但据我所知,SSRS 对于默认刷新或您想要选择的任何日期都不灵活。如果您想刷新一个参数并让它在屏幕上从另一个变量执行此操作,您需要告诉它它的可用值和默认值已更改。但是,这摆脱了日历选项,因此您需要将参数传递给另一个参数。但是,如果您隐藏第二个参数,它将不会传递该值。

任何帮助将非常感激。

最佳答案

根据Microsoft Connect不刷新默认参数的能力是“设计使然”

"As described, this is not a bug. We do not re-evaluate the default value for a subsequent parameter unless the selected value is no longer in the valid values list. We do not know whether the current value was specifically requested by the user or it is there because of the default. You could make a case to have control over this behavior through some sort of property but it is currently working as designed." - Microsoft



建议的解决方法:

玩这个已经有一段时间了,我能看到的唯一解决方案是改变你打算让用户如何使用报告。

而不是 UserStart显示由查询计算的日期,您将其用作覆盖日期,并允许它接受空值并将空值设置为默认值。然后在查询中使用类似的东西:
where Table.DateStart < isnull(@UserStart, @Start)

这允许用户选择 DatePeriod使用自己的自定义日期范围运行报告或更新。

样本:

ssrs sample

关于reporting-services - 级联文本参数,将允许选择日期时间日历或预填充字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17536996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com