Reporting Services - Abfrage mehrwertiger Parameter, die keine Ergebnisse zurückgibt
Mit SSRS (SQL Server 2005) habe ich zwei Berichte erstellt. Nennen wir sie zur einfacheren ErklärungMAIN_REPORT
undSUB_REPORT
.
MAIN_REPORT
Führt eine Abfrage aus, die eine Reihe von Bereichen mit mehreren TagNames pro Bereich zurückgibt:
AREA Tagname
----------
A1 T1
A1 T2
A2 T3
A3 T4
Wenn Sie eine der Bereichszellen auswählen, wird diese geöffnetSUB_REPORT
und übergibt einen Parameter an@ParentTagNames
mitJoin(Parameters!ResultsOfSearch.Value,",")
. ResultsOfSearch
entspricht der obigen Spalte "Tagname" (ich habe noch nicht herausgefunden, wie die Tagnamen auf die Namen im ausgewählten Bereich beschränkt werden sollen, aber ich werde mich später darum kümmern).
SUB_REPORT
Nimmt den übergebenen Parameter und fragt eine umfangreiche Datenbank nach dem Tag-Namen ab und gibt eine minimale, maximale und durchschnittliche Anzahl verfügbarer Werte zurück:
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
jedoch, wenn@ParentTagNames
Ist der Wert größer als ein Wert, werden keine Daten zurückgegeben. Wenn es einem einzelnen Tag entspricht, werden Daten zurückgegeben. Ich nahm an, dass es etwas mit der Formatierung der darin enthaltenen Daten zu tun haben muss@ParentTagNames
wie es vergangen istMAIN_REPORT
, aber es scheint keine Rolle zu spielen.
Ich habe die folgenden Formate ausprobiert:
T1,T2,T3,T4,T5,T6
'T1','T2','T3','T4','T5','T6'
Ich habe dafür gesorgt, dass der Mehrfachwert für den Parameter überprüft wird@ParentTagNames
. Google hat mich erfolgreich gescheitert.
Jemand?
EDIT: Profiler Magie!
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'