1
我正在開發一個SSRS 2008 R2 RDL文件。現在,我正在嘗試添加一個應該是多選的報表參數。之前我曾使用多選參數,但之前一直使用CHARACTER數據類型。所以在我的主數據集我的代碼是:如何用唯一標識符創建多選參數?
;WITH Cte AS
(
SELECT
1 as id,
CAST('<M>' + REPLACE((select @IncidentType), ',' , '</M><M>') + '</M>' AS XML) AS Names
)
SELECT
id,
Split.a.value('.', 'VARCHAR(MAX)') AS Names
INTO #incident_types
FROM Cte
CROSS APPLY Names.nodes('/M') Split(a)
(在我RDL文件這個IncidentType報告參數可多選)
但現在IncidentType是UNIQUEIDENTIFIER數據類型。我曾嘗試SSRS JOIN功能,但是這仍然是讓我在SSRS同樣的錯誤,當我運行此:
An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset 'Incidents'. (rsErrorExecutingCommand)
Conversion failed when converting from a character string to uniqueidentifier.
如何通過傳遞多個uniqueidentifiers爲此做我的代碼?
我嘗試下面的解決方案,您發佈的評論:
CAST(Split.a.value('.', 'VARCHAR(MAX)') AS UNIQUEIDENTIFIER) AS Names
但是,這給了我現在這個錯誤:
Msg 8169, Level 16, State 2, Line 62
Conversion failed when converting from a character string to uniqueidentifier.
在我的存儲過程的頂部,我有:
declare
@FacilityID varchar(MAX) = null,
@ProgramID uniqueidentifier = null,
@ServiceDateStart smalldatetime = null,
@ServiceDateEnd smalldatetime = null,
@IncidentType varchar(MAX) = null
SET @IncidentType = '864EA130-F36B-4958-B51F-EE9DBD35D804,671A8EB3-8298-40DB-BD66-93309904E463,ACA1EB55-3D66-467B-8388-CC42FCFB00F3
SET @FacilityID = '83B465B8-28DD-4F37-9F2D-A4D5E38EE7FB,3EC657F7-655F-43FB-8424-2A8914E7C725,B2064474-5C9B-4884-B1D7-4FCE1C804DF7'
但是,導致此錯誤的行是:
AND (@IncidentType is NULL OR event_definition_rv.event_definition_id in (SELECT Names FROM #incident_types))
因爲我可以無差錯運行這些行:
select * from #incident_types
select * from #facilities
保羅,美國可以再看一看好嗎? – salvationishere
你能展示你的完整代碼嗎? '運行EXEC tempdb..sp_help'#incident_types''表明#incident_types表的類型是GUID。而且我沒有使用'WHERE x in(SELECT Names from #incident_types)'子句,所以我認爲問題可能在其他地方。 – PaulStock
謝謝,我一定誤入了IncidentType的原因,現在我的sproc正在處理你的邏輯!謝謝! – salvationishere