Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 生成报告时SSRS参数是否固定?_Reporting Services - Fatal编程技术网

Reporting services 生成报告时SSRS参数是否固定?

Reporting services 生成报告时SSRS参数是否固定?,reporting-services,Reporting Services,我在SQL查询中使用了以下代码: DECLARE @CurrentDate DateTime = Getdate() 然后,我在同一个查询中多次引用@CurrentDate,而不是使用Getdate()函数。这很有用,因为@CurrentDate的值在查询执行期间不会更改 然而,我已经开始将其中一些变量转换为SSRS设置的参数。这允许用户更改参数@CurrentDate,该参数因各种原因而有用。通常,默认值设置为“=Now()”或包含Now()函数的某个表达式 在什么阶段计算这些参数?如果我希

我在SQL查询中使用了以下代码:

DECLARE @CurrentDate DateTime = Getdate()
然后,我在同一个查询中多次引用@CurrentDate,而不是使用Getdate()函数。这很有用,因为@CurrentDate的值在查询执行期间不会更改

然而,我已经开始将其中一些变量转换为SSRS设置的参数。这允许用户更改参数@CurrentDate,该参数因各种原因而有用。通常,默认值设置为“=Now()”或包含Now()函数的某个表达式

在什么阶段计算这些参数?如果我希望参数彼此一致,是否有一种“正确”的方法来计算它们


我试图弄清楚是否应该为当前日期使用一个参数,然后在计算其他参数时引用该参数,或者这是否会产生与在表达式中为每个参数使用Now()相同的不一致性(或更严重的不一致性)。

这完全取决于您所说的“一致性”是什么意思。以这两个脚本为例:

--Method #1
UPDATE tracker.shipment SET delivery_date = GETDATE() WHERE delivery_id = 1;
WAITFOR DELAY '00:00:01';
UPDATE tracker.shipment SET delivery_date = GETDATE() WHERE delivery_id = 2;

--Method #2
DECLARE @current_date DATETIME = GETDATE();
UPDATE tracker.shipment SET delivery_date = @current_date WHERE delivery_id = 1;
WAITFOR DELAY '00:00:01';
UPDATE tracker.shipment SET delivery_date = @current_date WHERE delivery_id = 2;
这是一个伪脚本,用于更新跟踪系统,以显示何时交货。我认为第一个版本更“一致”,因为它记录了实际进行更新的时间,而不是从存储过程第一次输入的任意日期/时间

让我们假设有另一个系统不断检查添加了交付日期的交付项目,然后进行实际交付,或者在每次交付更新之前,代码会触发实际交付。在这种情况下,使用第二种方法的一致性要差得多,因为这将记录过去一段时间内的交付,而不是实际交付

据我所知,将对SSRS发送的参数进行评估,以确定用户单击“查看报告”按钮时报告服务器上的服务器时间。因此,具有
Now()
的每个参数都将以相同的日期时间结束,但如果您的服务器不完全同步,则这可能与SQL Server略有出入

这真的重要吗?嗯,我想这完全取决于你对你过去的日期/时间做了什么。用户输入自定义日期/时间时,是输入日期还是完整日期/时间?我想他们只输入一个日期,所以这会自动转换为00:00:00.00时间成分


基本上,我需要更多的上下文才能给出更完整的答案。

只需创建一个datetime SSRS参数,并将默认值设置为NOW()。然后它会假设一切,但用户可以选择不同的日期。还要注意的是,SSRS使用DATETIME参数,但对于我的许多报告,我实际上使用了一个字符串参数字段,我将其转换为DATE,以避免在用户未体验的小时之间丢失数据:

WHERE CAST(StartDate AS DATE) > CAST(@StartDateParam AS DATE)

据我所知,只有当用户重新打开报表时,才会重新计算参数。另外,据我所知,SQL Server当前对每个查询只计算一次
GETDATE()
,当然,这种行为在SQL Server版本之间可能会发生变化。