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