【问题标题】:Multiple Choice and Hidden Reports多项选择和隐藏报告
【发布时间】:2013-03-12 12:12:31
【问题描述】:

我已经在哪个报告参数中指定了值

Label                                    Value 
Occupancy                                Occupancy 
Pitch Nights Sold                        PitchNightsSold 
Capacity                                 Capacity 
Pitch Nights Sold And Capacity           PitchNightsSoldAndCapacity 
Pitch Nights Sold And Occupancy          PitchNightsSoldAndOccupancy 
Pitch Nights Sold Capacity And Occupancy PitchNightsSoldCapacityAndOccupancy 

主要数据集:

SELECT 

OccupancyDetail.CalendarYear, 
OccupancyDetail.CalendarMonth, 
SUM(OccupancyDetail.No_of_Nights) AS No_of_Nights, 
SUM(OccupancyDetail.Capacity) AS Capacity

FROM            
OccupancyDetail INNER JOIN
    Site ON OccupancyDetail.Site_Skey = Site.Site_Skey

WHERE  (OccupancyDetail.ReferenceDate = convert(Date,getdate()))
AND CASE WHEN @Time = 'YEAR' THEN CAST(CalendarYear as varchar(4)) else CalendarMonth + ' ' + CAST(CalendarYear as varchar(4)) end in (@Dates)

AND ((@ReportingLevel = 'BDM' AND Site.BDM in(@BDM_Region_Site))
    OR (@ReportingLevel = 'Region' AND Site.Region in (@BDM_Region_Site))
    OR (@ReportingLevel = 'SiteName' AND Site.SiteName in (@BDM_Region_Site)))

GROUP BY OccupancyDetail.ReferenceDate,OccupancyDetail.CalendarYear, OccupancyDetail.CalendarMonth

时间数据集:

select 
DateChoice 

FROM
(
select distinct 
CalendarYear, 
1 as MonthNumber,
CAST(CalendarYear as varchar(4)) as DateChoice 
from Time
where @Time = 'YEAR'


union all

select Distinct 
CalendarYear, 
MonthNumber,
CalendarMonth + ' ' + CAST(CalendarYear as varchar(4)) as DateChoice 
from Time 
where @Time = 'MONTH'
) as QRYDATA

ORDER BY CalendarYear,MonthNumber

网站数据集:

SELECT DISTINCT BDM AS SiteInfo FROM Site
WHERE @ReportingLevel = 'BDM'


UNION ALL

SELECT DISTINCT Region  FROM Site
WHERE @ReportingLevel = 'Region'


UNION ALL

SELECT DISTINCT SiteName  FROM Site
WHERE @ReportingLevel = 'SiteName'

在 Report Builder 3.0 上,我创建了 6 个隐藏的报告,除非在参数中选择它:

报告代码可见性字符串:

=iif(Parameters!WhichReport.Value(0) = "Occupancy", False, True)

但我想要做的是使参数成为一个多选参数,这样有人可以选择两个图表而不是 1 或选择所有 6 个等,但无论做出什么选择,所有其他报告都需要保持隐藏。可以这样做吗?如果可以,怎么做?

谢谢

韦恩

【问题讨论】:

    标签: sql tsql reporting-services


    【解决方案1】:

    您可以修改Hidden 表达式来实现:

    使用Join将所有选中的报告转成一个字符串,然后检查相关的报告名称是否在字符串中,类似:

    =IIf(
      InStr(Join(Parameters!WhichReport.Value, ","), "Occupancy Report") > 0
      , False
      , True
    )
    

    或者,对于不同的项目:

    =IIf(
      InStr(Join(Parameters!WhichReport.Value, ","), "Capacity Report") > 0
      , False
      , True
    )
    

    评论后编辑:

    我猜你会得到不匹配的值,因为像 PitchNightsSoldPitchNightsSoldAndCapacity 这样的值会混淆所写的表达式。

    我会使用类似于以下的数据集来控制项目的可见性:

    Label                                      Value
    -----                                      -----
    Occupancy                                  Chart1
    Pitch Nights Sold                          Chart2
    Capacity                                   Chart3
    Pitch Nights Sold And Capacity             Chart4
    Pitch Nights Sold And Occupancy            Chart5
    Pitch Nights Sold Capacity And Occupancy   Chart6
    

    然后表达式如下:

    =IIf(
      InStr(Join(Parameters!WhichReport.Value, ","), "Chart1") > 0
      , False
      , True
    )
    

    只适用于一项。

    由于这些是您自己的内部常量值,您可以随意调用它们;只是让它们清晰明确。标签将保持不变,因此用户在运行报告时不会受到影响。

    评论后编辑:

    在评论中@glh 为类似的Value 值提供了一个很好的解决方案:

    ...如果你用逗号换行并搜索它们,这将删除 部分发现。

    比如:

    =IIf(
      InStr("," + Join(Parameters!WhichReport.Value, ",") + ",", ",PitchNightsSold,") > 0
      , False
      , True
    )
    

    也会很好用;感谢他的建议。

    【讨论】:

    • 嗨,Ian,感谢您的回复,您的解决方案很有效,但在我最近的 3 份报告中失败了,我认为这与报告的名称有关 报告 1 - 占用报告 2 - 间距Nights Sold Report 3 - Capacity Report 4 - Pitch Nights Sold and Capacity Report 5 - Pitch Nights Sold and Occupancy Report 6 - Pitch Nights Sold, Capacity and Occupancy Report 因此,当我使用您的解决方案并运行报告 4 时,我会得到 Pitch Nights Sold Report和容量报告,然后是组合报告,我只想看到组合报告。
    • 您是否更改了每个报告项目的名称?您不能每次都使用相同的代码,您必须根据自己的目的对其进行更新。
    • 嗨 Ian,当我更改报告可见性时,我用每个报告的名称更新了它。 =IIf( InStr(Join(Parameters!WhichReport.Value, ","), "PitchNightsSoldAndCapacity") > 0 , False , True )
    • 您能否将完整的数据集详细信息添加到问题中?
    • 对不起,我应该更清楚一点,我的意思是用于填充 WhoReport 参数的详细信息,也许还有您正在使用的表达式的一些示例。给您带来的不便深表歉意。
    猜你喜欢
    • 2021-05-19
    • 2014-11-23
    • 2023-03-27
    • 2012-07-30
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多