SSRS (SQL Server 2005) を使用して、2 つのレポートを設定しました。MAIN_REPORT
説明を簡単にするために、それらを と と呼びましょうSUB_REPORT
。
MAIN_REPORT
エリアごとに複数の TagNames を使用して、エリアのセットを返すクエリを実行します。
AREA Tagname
----------
A1 T1
A1 T2
A2 T3
A3 T4
Area セルの 1 つを選択すると、それが開きSUB_REPORT
、パラメータが@ParentTagNames
usingに渡されますJoin(Parameters!ResultsOfSearch.Value,",")
。ResultsOfSearch
上記のタグ名列と同じです (タグ名を選択した領域のものだけに制限する方法はまだわかりませんが、後で心配します)。
SUB_REPORT
渡されたパラメーターを受け取り、タグ名について大規模なデータベースを照会し、使用可能な値の最小値、最大値、および平均値を返します。
SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = 'LATEST'
AND h.wwRetrievalMode = 'Cyclic'
AND h.wwResolution = '60000'
AND h.Value > '-1.0'
AND h.DateTime >= '2009-09-01 12:00:00'
AND h.DateTime <= '2009-09-02 16:00:00'
GROUP BY h.TagName
ただし、@ParentTagNames
複数の値に等しい場合、データは返されません。単一のタグと等しい場合は、データを返します。@ParentTagNames
から渡されたデータの書式設定と関係があるに違いないと考えましたが、MAIN_REPORT
問題ではないようです。
次の形式を試しました。
T1,T2,T3,T4,T5,T6
'T1','T2','T3','T4','T5','T6'
パラメータの複数値がチェックされていることを確認しました@ParentTagNames
。Google は私の失敗に成功しました。
誰?
編集: プロファイラーの魔法!
exec sp_executesql N'SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = ''LATEST''
AND h.wwRetrievalMode = ''Cyclic''
--AND h.wwResolution = @Resolution
AND h.wwResolution = ''60000''
AND h.Value > ''-1.0''
--AND h.DateTime >= @StartTime
--AND h.DateTime <= @EndTime
AND h.DateTime >= ''2009-09-01 12:00:00''
AND h.DateTime <= ''2009-09-02 16:00:00''
GROUP BY h.TagName',N'@ParentTagNames nvarchar(46)',@ParentTagNames=N'M12_CPM_Filling_250.Value,M8_Filling_391.Value'