Multi - Select Parameter (DATA TYPE)???

  • I've tried several things to get my multi-select parameter to take more than one value but it seems to only take the 1st one I input. I've been working on this for days and been trying alternate methods but nothing seems to work. I think my first question is if I'm planning on using a parameter as a multi-select parameter what is the data type I should call that parameter. In my case here, the evt_key is unique and will always be 36 characters. I cant imagine in my lifetime that I'm going to have any more than 20 items in the multiselect. Am I looking over something or any other suggestions? I also attached my sp at the bottom.

    Thanks

    ____________________________________________________________________

    CREATE procedure dbo.rpt_client_ngcoa_event_registration_attendees_by_state

    @evt_key varchar(4000)

    as

    set nocount on

    set transaction isolation level read uncommitted

    create table #tmp_dates

     (

     tmp_evt_key varchar(4000),

     tmp_title nvarchar(160),

     tmp_start_date datetime

    &nbsp

    create table #temp

     (

     tmp_key varchar(4000), -- event

     evt_title nvarchar(160),

     reg_key varchar(38),

     reg_session_code nvarchar(400),

     type nvarchar(20),

     reg_name nvarchar(300),

     reg_sort nvarchar(300),

     reg_org nvarchar(300),

     reg_date datetime,

     amount_paid money,

      adr_city_state_code NVARCHAR(110) NULL, 

      adr_state NVARCHAR(40) NULL, 

      adr_country NVARCHAR(60) NULL, 

      adr_city NVARCHAR(40) NULL, 

      adr_post_code NVARCHAR(20) NULL, 

     src_code NVARCHAR(50) NULL,

     days_out int

    &nbsp

    /*

    -- FOR MUTLI SELECT FUNCTIONALITY --

    create table #tempet

     (

     tmpet_key varchar(4000)

    &nbsp

    if @evt_key = '' or @evt_key is null

     begin

      insert #tempet

      select distinct evt_key

      from ev_event

      where evt_key in ('00394886-dfc7-4466-b674-1f2b3ede79ea', '10BE664D-DA4F-44F4-802C-ABD4FC015FB4','56504014-9787-4207-8FAD-EC6C6A384C1D')

       and evt_delete_flag = 0

     end

     

     else

     begin

      insert #tempet

      exec _selectstringfromstring @idstring = @evt_key,@intorstring='S'

     end

    if @evt_key = '' goto finalselect

    set @evt_key = dbo.av_preprptguidparam(@evt_key,'returnnull')

    */

     

    IF @evt_key='' SELECT @evt_key=NULL

     

     

    insert into #tmp_dates

     select distinct

      reg_evt_key,

      evt_title,

      evt_start_date

     from ev_registrant

      join ev_event on reg_evt_key = evt_key

      --join #tempet on evt_key=tmpet_key

     where reg_delete_flag = 0

      and evt_delete_flag = 0 --and reg_evt_key = '10BE664D-DA4F-44F4-802C-ABD4FC015FB4'

      and (@evt_key is null or (@evt_key is not null and reg_evt_key = @evt_key))

      ---AND (@evt_key IS NULL OR (@evt_key IS NOT NULL AND reg_evt_key IN (SELECT item FROM dbo.av_SelectStringFromString(@evt_key,','))))

      

    insert into #temp

    select tmp_evt_key,

     tmp_title,

     reg_key,

    --  net_prc_code,

     case net_prc_code when null then tmp_title

      when '' then tmp_title

      when 'NULL' then tmp_title

      when ' ' then tmp_title

      else net_prc_code end,

     'Reg Code',

     cst_ind_full_name_dn,

     cst_sort_name_dn,

     cst_org_name_dn,

     dbo.av_end_of_day(reg_add_date),

     net_payamount,

     adr_city_state_code, 

       adr_state,  

       adr_country, 

      adr_city, 

        adr_post_code, 

        src_code, 

     datediff(dd, reg_add_date, tmp_start_date)

    from #tmp_dates

     join ev_registrant on reg_evt_key = tmp_evt_key

     join vw_ac_invoice_detail on reg_ivd_key = net_ivd_key

     join co_customer on cst_key = reg_cst_key

     LEFT JOIN co_customer_x_address x ON x.cxa_key = reg_cxa_key AND cxa_delete_flag = 0  

        LEFT  JOIN co_address a ON a.adr_key = x.cxa_adr_key AND adr_delete_flag = 0 

        LEFT  JOIN co_source_code o ON src_key = reg_src_key AND src_delete_flag = 0

     --join #tempet on reg_evt_key=tmpet_key   

    where reg_delete_flag = 0

     and reg_cancel_date is null

     and cst_delete_flag = 0

     AND (@evt_key IS NULL OR (@evt_key IS NOT NULL AND tmp_evt_key IN (SELECT item FROM dbo.av_SelectStringFromString(@evt_key,','))))

     

     

    finalselect:

    select *

    from #temp

    --where (@evt_key IS NULL OR (@evt_key IS NOT NULL AND tmp_key IN (SELECT item FROM dbo.av_SelectStringFromString(@evt_key,','))))

    order by days_out desc, type, reg_name

    GO

  • I'm not sure if I'm reading this right  but do you want to pass a delimited string that you want to use as an IN statement for a select?

    IF so find a suitable parse string to table variable  fucntion ( or lift the code ) and drop the table variable in a subselect fron an IN clause.

    [font="Comic Sans MS"]The GrumpyOldDBA[/font]
    www.grumpyolddba.co.uk
    http://sqlblogcasts.com/blogs/grumpyolddba/

  • Hi,

    Are you doing this for an RS report? I have submitted an article to this web site about working with Multi-Select parameters in RS, but it is not published yet.

    If the article is not published in a while let me know then I'll email it to you (or just email me then I'll reply). There are a couple of considerations to keep in mind.

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply