SSRS多报告单一解决方案

时间:2016-07-07 22:36:48

标签: sql-server ssrs-2012

我需要每个月,每个月和每季度每季度运行一次报告。两份报告的基础数据是相同的。我是否需要为每个rdl文件维护一个单独的ssrs解决方案,以便我可以自定义开始日期和结束日期参数默认值,或者是否有某种方法可以将两个rdl文件保存在同一个解决方案中,具有monthStartDate和monthEndDate参数只有月度报告引用和quarterStartDate和quarterEndDate参数?

干杯,

2 个答案:

答案 0 :(得分:0)

根据您分享的内容,我不清楚为什么这甚至需要不同的报告(.rdl文件。)。一个.rdl可以采用startend参数订阅可以设置为季度和月度的不同值。或者可以添加另一个参数MonthOrQuarter,它可以更改数据集或过滤器的变量值。

但当然,这可能是两个.rdl引用共享数据集。

答案 1 :(得分:0)

创建一个视图,根据当前日期计算所需的各个时间段的开始和结束,并具有可用作参数标签的标签

CREATE VIEW DateRangeParameters
AS
SELECT 
DATEADD(month, DATEDIFF(month, '2000-01-01', getdate()), '2000-01-01') AS  StartDate, 
DATEADD(month, DATEDIFF(month, '2000-01-01', getdate())+1, '2000-01-01') AS EndDate, 
'This Month' as Label
UNION ALL
SELECT
DATEADD(month, DATEDIFF(month, '2000-01-01', getdate())-1, '2000-01-01') AS 
StartDate, 
DATEADD(month, DATEDIFF(month, '2000-01-01', getdate()), '2000-01-01') AS EndDate, 
'LastMonth' as Label
UNION ALL
DATEADD(month, DATEDIFF(month, '2000-01-01', getdate()), '2000-01-01') AS  StartDate, 
DATEADD(quarter, DATEDIFF(quarter, '2000-01-01', getdate())+1, '2000-01-01') AS EndDate, 
'This quarter' as Label
UNION ALL
SELECT
DATEADD(quarter, DATEDIFF(quarter, '2000-01-01', getdate())-1, '2000-01-01') AS 
StartDate, 
DATEADD(quarter, DATEDIFF(quarter, '2000-01-01', getdate()), '2000-01-01') AS EndDate, 
'LastQuarter' as Label

延长您需要的周,年等任何其他时间段。

直接使用此视图创建一个数据集以允许选择日期范围。

使用> = start和<将您的视图与现有查询相关联结束日期列添加一个WHERE子句,用于将标签链接到报表参数。

这种方式使用您的参数将选择在查询中使用的时间范围。

然后,您可以手动运行报告并选择时间范围参数,也可以将报告计划为每月运行并单独运行,并将其安排为每季度运行一次。在每次选择适当的参数,这将动态计算适当的日期范围。