0

私は、Which Report パラメータで値を指定しました

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 つではなく 2 つのグラフを選択したり、6 つすべてを選択したりできるようにすることですが、どのような選択を行っても、他のすべてのレポートは非​​表示のままにする必要があります。これを行うことができますか?

ありがとう

ウェイン

4

1 に答える 1

0

Hiddenこれを実現するために式を変更できます。

を使用して、選択したすべてのレポートを文字列に変換しJoin、関連するレポート名が文字列に含まれているかどうかを確認します。

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

または、別のアイテムの場合:

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

コメント後に編集:

PitchNightsSold値のような不一致が発生していると思いますがPitchNightsSoldAndCapacity、書かれた式を混乱させるでしょう。

アイテムの可視性を制御するには、次のようなデータセットを使用します。

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
)

1 つのアイテムにのみ適用されます。

これらは独自の内部定数値であるため、好きなように呼び出すことができます。それらを明確で明確にするだけです。ラベルは変更されないため、ユーザーはレポートを実行しても影響を受けません。

コメント後に編集:

コメントでは、@glh が同様のValue値に対する優れたソリューションを提供しています。

...コンマで結合してラップすると、部分的な検索が削除されます。

次のようなものです:

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

これも非常にうまく機能します。提案をしてくれた彼に感謝します。

于 2013-03-12T13:09:56.767 に答える