1
SSRS 2008을 사용 중이고 다음 데이터 집합을 보고서에 추가하려고합니다. 그러나 이것을 저장 프로 시저 또는 텍스트로 추가하든, 추가 한 후에는 필드를 표시하지 않습니다. 그리고 오류 메시지도 없습니다. 해결 방법과 원인은 무엇이 될 수 있습니까?동적 SQL 데이터 집합을 SSRS 2008에 추가하는 방법은 무엇입니까?
@END_YEAR VARCHAR(10), @END_MONTH VARCHAR(10), @END_WEEK VARCHAR(10), @TheTYPE VARCHAR(MAX), @IssueType VARCHAR(MAX), @Manager VARCHAR(MAX)
나는 이러한 매개 변수 내 저장된 프로 시저에 제대로 연결되어 있었다 확인 않았다 : 나는 (이 순서대로) 6 개 보고서 매개 변수가 있습니다. 나는이 동일한 보고서에 대해 동적 SQL이 아닌 다른 데이터 세트를 추가 할 수있었습니다. 그리고 내 저장 프로 시저는 다음과 같습니다
ALTER PROCEDURE ActionMetricsPageData
--DECLARE
@END_YEAR VARCHAR(10),
@END_MONTH VARCHAR(10),
@END_WEEK VARCHAR(10),
@TheTYPE VARCHAR(MAX), @IssueType VARCHAR(MAX), @Manager VARCHAR(MAX)
--SET @TheTYPE = 'All'
--SET @IssueType = '1'
--SET @Manager = 'All'
--AS
DECLARE @MainSQL VARCHAR(MAX)
DECLARE @START_DATE DATETIME
DECLARE @END_DATE DATETIME
IF @END_WEEK = '0' AND @END_MONTH = '12'
BEGIN
SET @START_DATE = CAST(('1/1/' + @END_YEAR) AS DATETIME)
SET @END_YEAR = CAST((CAST(@END_YEAR AS INT) + 1) AS VARCHAR(10))
SET @END_DATE = CAST(('1/1/' + (@END_YEAR)) AS DATETIME)
END
IF @END_WEEK = '0' AND @END_MONTH <> '12'
BEGIN
SET @END_MONTH = CAST((CAST(@END_MONTH AS INT) + 1) AS VARCHAR(10))
SET @END_DATE = CAST(((@END_MONTH) + '/1/' + @END_YEAR) AS DATETIME)
END
IF @END_WEEK <> '0'
BEGIN
SET @START_DATE = DATEADD(wk, @END_WEEK - 1, DATEADD(dd, -1, DATEADD(wk, DATEDIFF(wk,0,Convert(varchar(4), @END_YEAR) + '-01-01'), 0)))
SET @END_DATE = DATEADD(DAY, 7, @START_DATE)
END
IF @TheTYPE = 'All'
SET @TheTYPE = ' (IAT_PLAN_TYPE = ''Correction'' OR IAT_PLAN_TYPE = ''Corrective'' OR IAT_PLAN_TYPE = ''Preventive'' OR IAT_PLAN_TYPE = ''QSI - Corrective'' OR
IAT_PLAN_TYPE = ''QSI - Correction'' OR IAT_PLAN_TYPE = ''QSI - Preventive'') '
ELSE IF @TheTYPE = 'Corrective and Preventive'
SET @TheTYPE = ' (IAT_PLAN_TYPE = ''Corrective'' OR IAT_PLAN_TYPE = ''Preventive'') '
ELSE IF @TheTYPE = 'All QSI'
SET @TheTYPE = ' (IAT_PLAN_TYPE = ''QSI - Corrective'' OR IAT_PLAN_TYPE = ''QSI - Correction'' OR IAT_PLAN_TYPE = ''QSI - Preventive'') '
ELSE
SET @TheTYPE = ' (IAT_PLAN_TYPE = ' + @TheTYPE + ') '
IF @IssueType = '1'
SET @IssueType = ' (QEI_ITY_NAME = ''Correction (8.1)'' OR QEI_ITY_NAME = ''Corrective Action/Preventive Action'' OR QEI_ITY_NAME = ''Corrective | Preventive Action (8.1)'' OR
QEI_ITY_NAME = ''Investigation (8.1)'' OR QEI_ITY_NAME = ''Root Cause Investigation (8.1)'' OR QEI_ITY_NAME = ''Audit'' OR
QEI_ITY_NAME = ''Supplier Corrective | Preventive Action (8.1)'' OR QEI_ITY_NAME = ''PXP_PROCESS_QXP'' OR QEI_ITY_NAME = ''PXP_PRODUCT_QXP'') '
ELSE IF @IssueType = '2'
SET @IssueType = ' (QEI_ITY_NAME = ''Audit'') '
ELSE IF @IssueType = '3'
SET @IssueType = ' (QEI_ITY_NAME = ''Correction (8.1)'' OR QEI_ITY_NAME = ''Corrective Action/Preventive Action'' OR QEI_ITY_NAME = ''Corrective | Preventive Action (8.1)'' OR
QEI_ITY_NAME = ''Investigation (8.1)'' OR QEI_ITY_NAME = ''Root Cause Investigation (8.1)'') '
ELSE IF @IssueType = '4'
SET @IssueType = ' (QEI_ITY_NAME = ''PXP_PROCESS_QXP'' OR QEI_ITY_NAME = ''PXP_PRODUCT_QXP'') '
ELSE IF @IssueType = '5'
SET @IssueType = ' (QEI_ITY_NAME = ''Supplier Corrective | Preventive Action (8.1)'') '
IF @Manager = 'All'
SET @Manager = ' <> ''All'' '
ELSE
SET @Manager = '= '' REPLACE(''' + @Manager + ''','','''') '
--SELECT @Manager
SET @MainSQL =
'SELECT DISTINCT IAT_ID, DOC_DOCUMENT_NO, SGD_SIGNOFF_DATE, BTK_NAME, BTK_CLOSED_DATE, TSK_ANT_COMPL_DATE, IAT_PLAN_TYPE, ACT_MANAGER_NAME, QEI_ITY_NAME FROM
(SELECT SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.IAT_ID, SMARTSOLVE.V_QEI_QEX_ISSUE.DOC_DOCUMENT_NO,
CASE VH_QEI_QEX_ISSUE.QEI_ITY_NAME WHEN ''Audit'' THEN
(SELECT TOP (1) SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SIGNOFF_DATE FROM SMARTSOLVE.V_RVW_REVIEW_TSK INNER JOIN
SMARTSOLVE.V_SGD_SIG_DETAIL_TSK ON SMARTSOLVE.V_RVW_REVIEW_TSK.RVW_SGN_id = SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SGN_id
WHERE (SMARTSOLVE.V_RVW_REVIEW_TSK.RVW_id = SMARTSOLVE.V_IMT_IMPLEMENT_TSK.STK_CURRENT_REV_id)
ORDER BY SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SIGNOFF_DATE DESC) ELSE [PROC].FINAL_APPROVAL.SGD_SIGNOFF_DATE END AS SGD_SIGNOFF_DATE, SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.BTK_NAME,
SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.BTK_CLOSED_DATE, SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.TSK_ANT_COMPL_DATE, SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.IAT_PLAN_TYPE, SMARTSOLVE.V_PSN_PERSON.ACT_MANAGER_NAME, SMARTSOLVE.VH_QEI_QEX_ISSUE.QEI_ITY_NAME
FROM SMARTSOLVE.VH_QEI_QEX_ISSUE INNER JOIN
SMARTSOLVE.V_QEI_QEX_ISSUE ON SMARTSOLVE.VH_QEI_QEX_ISSUE.QEI_id = SMARTSOLVE.V_QEI_QEX_ISSUE.QEI_id INNER JOIN
SMARTSOLVE.V_IMT_IMPLEMENT_TSK ON
SMARTSOLVE.V_QEI_QEX_ISSUE.QEI_id = SMARTSOLVE.V_IMT_IMPLEMENT_TSK.BTK_DOC_id LEFT OUTER JOIN
[PROC].FINAL_APPROVAL ON SMARTSOLVE.V_IMT_IMPLEMENT_TSK.STK_CURRENT_REV_id = [PROC].FINAL_APPROVAL.RVW_id INNER JOIN
SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK ON
SMARTSOLVE.V_IMT_IMPLEMENT_TSK.IMT_id = SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.BTK_PARENT_id LEFT OUTER JOIN
SMARTSOLVE.V_PSN_PERSON ON SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.BTK_OWNER_id = SMARTSOLVE.V_PSN_PERSON.ACT_id
WHERE (SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.BTK_STATUS <> ''ABR'')
AND (CASE VH_QEI_QEX_ISSUE.QEI_ITY_NAME WHEN ''Audit'' THEN
(SELECT TOP (1) SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SIGNOFF_DATE FROM SMARTSOLVE.V_RVW_REVIEW_TSK INNER JOIN
SMARTSOLVE.V_SGD_SIG_DETAIL_TSK ON SMARTSOLVE.V_RVW_REVIEW_TSK.RVW_SGN_id = SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SGN_id
WHERE (SMARTSOLVE.V_RVW_REVIEW_TSK.RVW_id = SMARTSOLVE.V_IMT_IMPLEMENT_TSK.STK_CURRENT_REV_id)
AND [PROC].FINAL_APPROVAL.SGD_SIGNOFF_DATE >= @START_DATE AND [PROC].FINAL_APPROVAL.SGD_SIGNOFF_DATE < @END_DATE
ORDER BY SMARTSOLVE.V_SGD_SIG_DETAIL_TSK.SGD_SIGNOFF_DATE DESC) ELSE [PROC].FINAL_APPROVAL.SGD_SIGNOFF_DATE END IS NOT NULL)
AND (SMARTSOLVE.V_IMT_IMPLEMENT_TSK.BTK_NAME <> ''PQRE and /or Action Plan'') AND (SMARTSOLVE.V_IMT_IMPLEMENT_TSK.BTK_NAME <> ''Implement Required Actions'') AND
(SMARTSOLVE.V_IAT_IMPL_ACTPLAN_TASK.IAT_PLAN_TYPE <> ''Effectivity Check'')
UNION
SELECT SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_ID, SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_EXCEPTION_NO, SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_CREATED_DATE,
SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_XRS_DESCRIPTION, SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_CLOSED_DATE, NULL, SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_XRS_DESCRIPTION,
SMARTSOLVE.V_PSN_PERSON.ACT_MANAGER_NAME, SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_BASE_EXCEPTION
FROM SMARTSOLVE.V_QXP_ALL_EXCEPTION INNER JOIN
SMARTSOLVE.V_PSN_PERSON ON
SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_CLOSED_BY = SMARTSOLVE.V_PSN_PERSON.ACT_LOGONUSER
WHERE (SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_XRS_DESCRIPTION = ''Correction'') AND
(SMARTSOLVE.V_QXP_ALL_EXCEPTION.QXP_RESOLUTION <> ''300'')
)B
WHERE '
SET @MainSQL = @MainSQL + @TheTYPE + ' AND ' + @IssueType + ' AND ACT_MANAGER_NAME ' + @Manager
EXEC (@MainSQL)
코드 블록에 모두 넣을 수 있다면 도움이 될 것입니다. – RThomas
Management Studio에서 저장 프로 시저를 호출하려고하면 어떻게됩니까? –
Stack Overflow는 토론 게시판이 아닐뿐 아니라 실제로 답변하고 있지 않는 한 답변을 게시하지 마십시오. 대신 주석 시스템에 주석을 사용하십시오. –