当依赖参数是参数本身时,如何在SSRS中修复参数前向依赖?

时间:2017-11-16 13:25:45

标签: reporting-services parameters

我有一个似乎是常见的问题,但它不符合我发现的任何建议的解决方案。我正在使用SQL Server 2012。

错误是:

  

“本地报告处理期间发生错误。的定义   报告'/员工按工作职能'是无效的。那个报告   参数'JobFunction'具有DefaultValue或ValidValue   取决于报告参数'JobFunction。'转发依赖项   无效“

我按以下顺序有两个参数: @用户名 @工作职能 @UserName拉取User!UserID全局。 @JobFunction与可用值和默认值的以下数据集(JobFunctions)相关联。它不允许空值或多个值:

--DECLARE @UserName VARCHAR(25) = 'abs34949'
DECLARE @SystemAdmin INT
SELECT @SystemAdmin = 
 (SELECT TOP (1) e.EmployeeId
FROM ref.Employee AS e
LEFT JOIN sec.Employee_JobFunction AS ejf ON e.EmployeeId = ejf.EmployeeId
WHERE e.StaffId = @UserName
AND (ejf.JobFunctionId = 2 --System Administration
OR e.EmployeeTypeId = 83) --CTSU
AND e.EmployeeStatusId = 1 --Active
AND e.StaffId IS NOT NULL
)
IF @SystemAdmin IS NOT NULL
BEGIN
SELECT jf.JobFunctionId
, jf.JobFunctionName
FROM sec.JobFunction AS jf
ORDER BY jf.JobFunctionName
END
ELSE
BEGIN
SELECT 0 AS JobFunctionId
, 'You are not authorized to run this report' AS JobFunctionName
END

报告的数据集本身是使用以下代码的存储过程:

--DECLARE @JobFunction INT = 155 --Property Admin 
SELECT l.LocationName
, e.DisplayName
FROM sec.JobFunction AS jf
INNER JOIN sec.Employee_JobFunction AS ejf ON jf.JobFunctionId = ejf.JobFunctionId
INNER JOIN ref.Employee AS e ON ejf.EmployeeId = e.EmployeeId
LEFT JOIN ref.Location AS l ON e.DefaultLocationId = l.LocationId
WHERE jf.JobFunctionId = @JobFunction
ORDER BY l.LocationName, e.DisplayName

我只是没有看到JobFunction参数放错位置,或者还有什么可能导致此错误消息。

0 个答案:

没有答案