我在Visual Studio 2017中构建了一份SSRS报告。 有一个开始和结束日期。从今天的早上6点开始是-1周,而结束日期是今天的早上5点59分。
我通常在SQL中设置这些值,但有些人还要求使用参数下拉列表来选择日期范围。
我打开VS中的参数,转到默认值,然后不知道Visual Basic不知道下一步。
答案 0 :(得分:3)
在"默认值"您已经打开的报告参数属性的标签
为开始日期输入以下内容
= CDate(格式(DateAdd(" d", - 7,Now())," yyyy-MM-dd")+" 06:00:00& #34)
为结束日期输入以下内容
= CDate(格式(现在," yyyy-MM-dd")+" 05:59:59")
输出如此
答案 1 :(得分:1)
正如您在SO上提出的任何问题都有很多可能的解决方案,我会分享对我自己和我的BI团队有用的东西。
我们允许报告用户从列表中选择许多不同的日期范围(本月,上个月,昨天等),这些日期范围填充@StartDate和@EndDate,它们都是隐藏参数。 @DateRange默认为上个月,但可以设置为任何内容。
为了实现这个目的,我在SQL中创建了两个存储的参数,名为Reporting.usp_StartDate和reporting.usp_EndDate,但是当然要用它们来调用它们。
Reporting.usp_StartDate
SELECT
COALESCE(
CASE WHEN @TimePeriod = 'Current Month' THEN DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) ELSE NULL END,
CASE WHEN @TimePeriod = 'Previous Month' THEN DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-1,0) ELSE NULL END,
CASE WHEN @TimePeriod = 'Previous 7 Days' THEN DATEADD(HOUR,6,DATEADD(WEEK,DATEDIFF(WEEK,0,GETDATE())-1,0)) ELSE NULL END,
DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
) [StartDate];
Reporting.usp_EndDate
SELECT
COALESCE(
CASE WHEN @TimePeriod = 'Current Month' THEN DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0) ELSE NULL END,
CASE WHEN @TimePeriod = 'Previous Month' THEN DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) ELSE NULL END,
CASE WHEN @TimePeriod = 'Previous 7 Days' THEN DATEADD(HOUR,6,DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)) ELSE NULL END,
GETDATE()
) [EndDate];
现在在VS2017项目中,打开你的.RDL。
这几乎设置了报告,您需要确保检索数据的数据集期望在WHERE子句或JOIN中接收@StartDate和@EndDate,您说您很乐意在SQL中设置值,所以我假设你可以处理这个。