I have a stored proc that has several parameters. Most of them allow for multiple selections in a drop-down menu. They are: vOwner, vFunction, vSite, vStatus (all multiple selections allowed and the "Select All" is also enabled), and then vStartDate and vEndDate.
For some reason, when I choose "Select All" for every parameter, SSRS cuts off some of the records. It seems to report everything except records for the very last "owner." I'm looking for a clue as to why this might be happening. It happens when I select just one date's worth of data. It's as though that last owner isn't even being picked up as part of the data set.
Where SSRS is concerned, the settings are fairly simple. I have a data set that references the stored procedure (below), and one for each of the lookup tables i have (function, status, etc.) Any help is appreciated. Let me know if other information is needed. Thanks!
Stored Procedure:
@vOwner varchar(1000) = NULL,
@vFunction varchar(1000) = NULL,
@vStatus varchar(1000) = NULL,
@vLocation varchar(1000) = NULL,
@vBeginDate datetime = NULL,
@vEndDate datetime = NULL
AS
BEGIN
--Allow for multiple owners, functions, etc. to be selected in SSRS.
Select @vOwner = ', ' + @vOwner + ', '
create table #Owner
(
Owner varchar(1000)
)
Insert Into #Owner
Select ManagerLastName + ', ' + ManagerFirstName As Owner
From Managers
Where @vOwner Like '%, ' + ManagerLastName + ', ' + ManagerFirstName + ', %'
Group By ManagerLastName, ManagerFirstName
--Function
Select @vFunction = ', ' + @vFu开发者_如何学Cnction + ', '
create table #Function
(
Functions varchar(1000)
)
Insert Into #Function
Select Functions
From Functions
Where @vFunction Like '%, ' + Functions + ', %'
Group By Functions
--Status
Select @vStatus = ', ' + @vStatus + ', '
create table #Status
(
IssueStatus varchar(1000)
)
Insert Into #Status
Select IssueStatus
From IssueStatus
Where @vStatus Like '%, ' + IssueStatus + ', %'
Group By IssueStatus
--Sites
Select @vLocation = ', ' + @vLocation + ', '
create table #Sites
(
siteName varchar(1000)
)
Insert Into #Sites
Select siteName
From Sites
Where @vLocation Like '%, ' + siteName + ', %'
Group By siteName
Select
recID,
siteName
functions
From issueInput
Where
@vFunction Like '%, ' + functions + ', %'
And @vOwner Like '%, ' + ManagerLastName + ', ' + ManagerFirstName + ', %'
And @vStatus Like '%, ' + IssueStatus + ', %'
And @vLocation Like '%, ' + SiteName + ', %'
And (@vBeginDate Is Null Or @vBeginDate = 0 Or @vBeginDate <= Cast(Convert(varchar,(OpenDate),101) As datetime))
And (@vEndDate Is Null Or @vEndDate = 0 Or @vEndDate >= Cast(Convert(varchar,(OpenDate),101) As datetime))
Order by OpenDate
END
Is there a reason you using a stored procedure? It's possible to do what you want, but passing multiple values on a single parameter isn't natively supported by SQL Server. If you want to do this, you have to do some hack, which from the looks of your SQL, you have impelmented a work around.
If you embed the query in the rdl file, you can simply have an IN
clause (i.e. IN(@vOwner)
) and SSRS will insert the values into the query in a proper way such that it has the expected behavior. This way you are relying on something that was designed to work instead of having to work around a known limitation.
Looks like it wasn't a flaw in SSRS at all. After testing it out more in SSMS, I discovered that it was only the owner value that was being cut off at the end. I increased the @vOwner parameter from varchar(1000) to varchar(2000) and it is working fine now. I was simply passing too many characters into that parameter and it was getting truncated. Problem solved. Thanks to billinkc for that light bulb!
精彩评论