Pass multiple comma delimited values to subreport procedure

I have a sub-report with a procedure that has an id (string) parameter.
It can take multiple ids which are comma delimited ie ‘123,346,789’
If I run the sub report as its own report with the id = ‘123,346,789’ it returns the three values I need

If I pass one id (123) to the sub report from the main report it works fine.

However if I try to return more than one  value (‘123,346’) to the sub report, it blows up with the error
“Function stp_ReturnID has too many arguments specified”

How do I get it the subreport to recognize the multiple comma delimited values?
fundsfAsked:
Who is Participating?
 
HainKurtConnect With a Mentor Sr. System AnalystCommented:
"procedure that has an id (string) parameter"

can you please post the code for this... we need to modify the query...
0
 
fundsfAuthor Commented:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

Alter procedure [dbo].[stp_ReturnID]
            @FundIds                  varchar(8000),
            @FromDate                  datetime,
            @ToDate                        datetime,
            @IsAnnualized            bit = 0
as
begin

      create table #key_unstrung (
            key_id            int
            )

      exec stp_ParseIdList  @FundIds


      select      key_id as FundId,
                  f.FundName,
                  dbo.udf_ReturnDateRange( f.FundId, @FromDate, @ToDate, @IsAnnualized ) as [Return]
      from      #key_unstrung k with (nolock)
            join Funds f with (nolock) on f.FundId = k.key_id
      order by f.FundName

end
0
 
mlmccConnect With a Mentor Commented:
How are you passing the values to the subreport?

mlmcc
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
HainKurtSr. System AnalystCommented:
is FundID in table also string?
0
 
HainKurtSr. System AnalystCommented:
also post the code for stp_ParseIdList  
0
 
HainKurtSr. System AnalystCommented:
you may use

select      key_id as FundId,
                  f.FundName,
                  dbo.udf_ReturnDateRange( f.FundId, @FromDate, @ToDate, @IsAnnualized ) as [Return]
      from      Funds f
      where ',' + @FundIds + ',' like '%,'+f.FundId+',%' like
      order by f.FundName

and remove following code

create table #key_unstrung (
            key_id            int
            )

      exec stp_ParseIdList  @FundIds

0
 
HainKurtSr. System AnalystCommented:
oops, try this and remove previous code in your sp
select f.FundId,
       f.FundName,
       dbo.udf_ReturnDateRange( f.FundId, @FromDate, @ToDate, @IsAnnualized ) as [Return]
  from Funds f 
 where ',' + @FundIds + ',' like '%,'+f.FundId+',%' like 
 order by f.FundName

Open in new window

0
 
fundsfAuthor Commented:
I need to pass a formula/array to the stp.
Right now I have a a place holder '123,456,789'

If I pass the '123,456,789' straight to the stp parameter it works ,but not the formula place holder.

What it really needs to do is look at a pre-defined formula
if {?Index} = 'ABC' then 123
else
if {?Index} = 'DEF' then 345
else
if {?Index} = 'GHI' then 789.
Then build an comma delimited array based on that and pass it to the stp
fyi, The fundid is a number
0
 
fundsfAuthor Commented:
I had to get rid of the second like to modify the proc.

Now I get this error
Conversion failed when converting the varchar value '%,' to data type int
select f.FundId,
       f.FundName,
       dbo.udf_ReturnDateRange( f.FundId, @FromDate, @ToDate, @IsAnnualized ) as [Return]
  from Funds f 
 where ',' + @FundIds + ',' like '%,'+f.FundId+',%'
 order by f.FundName

Open in new window

0
 
HainKurtSr. System AnalystCommented:
where ',' + @FundIds + ',' like '%,'+f.FundId+',%'

-->

where ',' + @FundIds + ',' like '%,' + cast(f.FundId as varchar) + ',%'
0
 
fundsfAuthor Commented:
We ended up writing a different stp so I didn't have to pass the multiple ids
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.