Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Pass multiple comma delimited values to subreport procedure

Posted on 2010-11-30
11
Medium Priority
?
483 Views
Last Modified: 2012-06-21
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?
0
Comment
Question by:fundsf
  • 6
  • 4
11 Comments
 
LVL 61

Accepted Solution

by:
HainKurt earned 1000 total points
ID: 34242125
"procedure that has an id (string) parameter"

can you please post the code for this... we need to modify the query...
0
 

Author Comment

by:fundsf
ID: 34242155
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
 
LVL 101

Assisted Solution

by:mlmcc
mlmcc earned 1000 total points
ID: 34242162
How are you passing the values to the subreport?

mlmcc
0
Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

 
LVL 61

Expert Comment

by:HainKurt
ID: 34242303
is FundID in table also string?
0
 
LVL 61

Expert Comment

by:HainKurt
ID: 34242325
also post the code for stp_ParseIdList  
0
 
LVL 61

Expert Comment

by:HainKurt
ID: 34242346
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
 
LVL 61

Expert Comment

by:HainKurt
ID: 34242352
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
 

Author Comment

by:fundsf
ID: 34242414
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
 

Author Comment

by:fundsf
ID: 34242583
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
 
LVL 61

Expert Comment

by:HainKurt
ID: 34243064
where ',' + @FundIds + ',' like '%,'+f.FundId+',%'

-->

where ',' + @FundIds + ',' like '%,' + cast(f.FundId as varchar) + ',%'
0
 

Author Closing Comment

by:fundsf
ID: 34253068
We ended up writing a different stp so I didn't have to pass the multiple ids
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I hate sub reports and always consider them the last resort in any reporting solution.  The negative effect on performance and maintainability is just not worth the easy ride they give the report writer.  Nine times out of ten reporting requirements…
Hello everyone, Hope you find this as helpful as we did. We have on the company I work for an application built in Delphi V with Crystal Reports 8. We all know that Crystal & Delphi can be temperamental sometimes and the worst thing is, nearly…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…

926 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question