SSRS表达式可根据色浆日期填充背景色

时间:2019-05-17 07:27:58

标签: sql-server expression ssrs-2017

我有这个查询,它将从SQL Server返回一个日期

SELECT TOP 1 
    CASE
       WHEN (SELECT TOP 1 CONVERT(DATE, [Duedate]) AS [Duedate] 
             FROM [dbo].[Table1] 
             WHERE CONVERT(DATE, [Duedate]) = CONVERT(DATE, GETDATE())) = CONVERT(DATE, GETDATE()) 
          THEN CONVERT(DATE, GETDATE())
          ELSE (SELECT TOP 1 CONVERT(DATE, [Duedate])
                FROM [dbo].[Table1] 
                WHERE CONVERT(DATE, [Duedate]) > CONVERT(DATE, GETDATE())
                ORDER BY CONVERT(DATE, [Duedate]) ASC)
    END AS [ReturnRequiredDate]
FROM
    [dbo].[Table1] 

但是,当我尝试将其添加到SSRS报表中的数据集中时,它将返回日期和时间格式。该如何解决?

其次,我想根据此返回日期(即前一天&包括返回日期)填充表格列/行的背景颜色。

也就是说,根据情况,如果日期返回到每个月的16日,则填充的颜色应该是从16日到前几天。

也可以说,如果返回的日期是任何月份的27号,则应从27号开始填充颜色到以前的记录(以前的日期记录) 如何使用SSRS表达式执行此操作?

使用查询,在所有日期中,我可以返回[ReturnRequiredDate]之前的所有日期。有什么方法可以只为返回的日期填充颜色吗?在同一个SSRS表中(我的所有记录都在其中)。我不想在SSRS中使用单独的表格进行颜色填充。

希望我已经清楚地解释了规则,如果没有,请让我知道以修改问题。谢谢。

1 个答案:

答案 0 :(得分:0)

第一个问题

datetime返回的日期有什么问题?如果需要对其进行计算,则2019-05-17在功能上等效于2019-05-17 00:00:00.0000000。如果您需要将其仅显示为日期,请在报表中的文本框属性或表达式中使用formatting,例如:=format(Fields!ReturnRequiredDate.Value,"yyyy-MM-dd")

第二个问题

同样,您只需要将数据驱动的表达式应用于文本框背景色属性,该属性包含检查值是否小于参数date的数据:

=iif(Fields!YourDate.Value <= first(Fields!ReturnRequiredDate.Value,"YourDataset"),"Red","Black")