SSRS multi value parameter expansion invalidates query syntax

These results from from running a demo solution and profiling the server.
--- here is the text of the query saved in the report's design ---
select *
from test_ssl
where [who] in(case when @P1 = 'all' then [who] else @P1 end)
    and [recid] in(case when @P2 = 'all' then [recid] else @P2 end)
Executing the report works when @P1 = ‘all’, @P2 = ‘all’
---------------------------------------- as executed at the server ---------------------------
(@P1 nvarchar(3),@P2 nvarchar(3))
select *
from test_ssl
where [who] in(case when @P1 = 'all' then [who] else @P1 end)
    and [recid] in(case when @P2 = 'all' then [recid] else @P2 end)
Executing the report fails when @P1 = (‘kid’,’adult’) & @P2 = ‘all’
    An error has occurred during report processing. (rsProcessingAborted)
    Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)
    For more information about this error navigate to the report server on the local server machine, or enable remote errors
---------------------------------------- as executed at the server ---------------------------
exec sp_executesql
N'select *
from test_ssl
where [who] in(case when N''kid'',N''adult'' = ''all'' then [who] else
N''kid'',N''adult'' end)
    and [recid] in(case when @P2 = ''all'' then [recid] else @P2 end)
', N'@P2 nvarchar(3)', @P2=N'all'
SSRS expanded @P1 into its values then substituted @P1 with 'kid','adult' in the query's text, then sent the text to SQL server using sp_executesql().
This substitution invalidates the SQL syntax.  The report fails.
For me to implement this simple example with only 2 parameters in separate queries in the report where @P1 &/ @P2 can each separately be {= 'all', or 1 value, or more than 1 value} will take 4 separate queries.
Query1: IF @P1 = all, @P2 = all BEGIN ... query text 1 ... END
Query2: IF @P1 != all, @P2 = all BEGIN ... query text 2 ... END
Query3: IF @P1 = all, @P2 != all BEGIN ... query text 3 ... END
and
Query4: IF @P1 != all, @P2 != all BEGIN ... query text 3 ... END
Each query will have to have a unique WHERE clause.
In my actual work problem some reports take 8 parameters that will be either 'all', 1 value, or multiple values.
This means that the report will have to have 64 queries each with its own unique WHERE clause and each query wrapped with its own IF @P..... = 'all' BEGIN ... query text ... END
Who knows what to do about this issue?
Hello!

Hi Stevesl,
I have tested on my local environment and the query is invalid.
As
Jan Pieter Posthuma mentioned that you can just add filter as below in the query, when you set the "Allow multiple values" in the parameter, you will got the "Select All" in the dropdown list, so there is no need to add "all"
again.
select * from test_ssl
where [who] in(@P1) and [recid] in(@P2)
You can also add filter in the dataset, details information below for your reference:
By default we can add many filters and the default logic between these filter is "And" and if you want to add some "Or" filters you can reference to the blog below:
FAQ: How do I implement OR logic or complicated logics for filters in a SSRS report?
Details information about filter in SSRS :
Add a Filter to a Dataset (Report Builder and SSRS)
Because you have a lot of parameters and you can consider add the cascading parameters:
Add Cascading Parameters to a Report (Report Builder and SSRS)
If you still have any problem, please feel free to ask.
Regards
Vicky Liu
Vicky Liu
TechNet Community Support

Similar Messages

  • Multi-value parameter report - error : Incorrect syntax near ',' with multi-valued parameter in SSRS

    Hey,
    I created a report in Reporting Services  where I added multi-value parameter
    ( Filter).  When I run my report, and try to select more than one parameter, I get an error:  Incorrect syntax near ','
    then i put in parameter expression :  join(Parameters!Filter.Value,",")  
    and add : dbo.ufnSplit  before calling parameter in query :
    >>>  set @valwhere = 'table.field IN (select * from dbo.ufnSplit(' + @Filter + ' , '',''))'
    but i still have errors : incorrect syntax near 'text'  which is the second value of the picklist of the parameter,
    Please Any idea ?
    Thanks !!

    I have sometimes had to collate as default with the SQL query
    currently I've just using
    CompanyName in
    (selectitemfromdbo.fnSplit(@function,','))
    In the SSRS report text box I have Join(Parameters!Company.Value,",")

  • Use one value of multi value parameter in dataset query

    I have a parameter @Period that is populated with posting periods from our financial system (e.g. 201301, 201302, 201303, etc.).  It is set as a multi value parameter to allow users to choose multiple posting periods.  This parameter
    is used in my main dataset.  If the user chooses 201301 and 201302, I want to choose the greatest value chosen and use it in a where clause such that MyPostPeriod <= @Period.  Since @Period is a multivalue, the ><= won't work. 
    I read that SSRS just passes this as a comma separated value (201301,201302).  How do I find the greatest value in the list and how do I use that in my where clause?
    the user is selecting projects with activity during the posting period but then I want to grab all costs and invoices since the project was created.  They choose to see activity in 201301 and 201302 but I need to get all invoices and costs <= 201302.
    The only option I have been able to come up with is to have two parameters - one for start period and one for end period. Any better solutions?  I'm not using stored procedures.
    Milissa Hartwell

    Hi Milissa,
    Based on your description, you want to get the Maximum value from a multi-value parameter. We can insert the selected values into a temp table and get the Maximum values. Suppose we have main dataset (DataSet1) include Period field, and a parameter Period
    in the report. Please refer to the following steps:
    Create another dataset named DataSet2 using the query below.
    CREATE TABLE #Max (COL1 INT)
    INSERT INTO #Max Values(1)
    SELECT * FROM #Max
    Double click DataSet2, change the dataset using the expression below:
    ="CREATE TABLE #Max (COL1 INT)" &
    "INSERT INTO #Max VALUES (" & Join(Parameters! Period.Value,"),(") &")" &
    "SELECT TOP 1 * FROM #Max ORDER BY COL1 DESC"
    Create a parameter (Max) set the Data Type to “Integer”, and get the available values and default values from the DataSet2 COL1. Then, set the visibility to “Hidden”.
    Double click the DataSet1, click Filters in the left pane. Fill with following values:
    Expression: [Period]
    Operator: <=
    Value: [@Max]
    Please refer to the following screenshot:
    Regards,
    Alisa Tang
    Alisa Tang
    TechNet Community Support

  • How to increase the width of the drop down list box in SSRS multi value parameter

    Hi,
    I am using SSRS 2012. I have a parameter, which accepts multi value.
    The width of the drop down list box is very small, and the user need to scroll to the right to view the complete view of the content in the list box. But, if I don't use multi value then the length is good.  Kindly suggest how to I increase the width
    of the list box when it set to multi value parameter.
    Thanks in advance,
    Mahalengam Arumugam

    Hi Mahalengam,
    After testing the issue in my local environment, I can reproduce it. When the values for a single parameter are too long, the drop-down list of the parameter will automatically enlarge to an appropriate size. While the values for a multiple parameter are
    too long, we need to scroll to the right to view the complete view of the content in the list box in SSRS 2008. But in SSRS 2008R2 and SSRS 2012, we can directly drag the black control at the bottom of the list box to control the size.
    The following screenshot is for your reference:
    If there are any other questions, please feel free to ask.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support
    Hi Katherine,
    Thanks for your reply. I understood we need to drag the list box to a maximum size to view the contents.
    But, this seems an additional task, i know this is a limitation in the current version of SSRS and hope it will be resolved in the next versions.
    Thanks for your efforts,
    Mahalengam Arumugam

  • SSRS Multi Value Parameter-- though multiple checkboxes ie values are selected ,data is retrieved only from first selected checkbox

    Hello Forum Members,
    I have a Multi Valued Parameter as text field.
    Input field Sale_Month is of the type Nvarchar in the Database and has 2014.01,2014.02,2014.05 etc.
    I can multi select the values but when I run the report only values from first check box are retrieved though I have data for all.
    Please advise me.
    Sqlquery9

    Go to tablix properties, under Filter tab make sure that the Sale_Month filter expression has "IN" operator. Also make sure that the value expression has =Parameter!Sale_Month.Value
    Regards, RSingh

  • Stored Proc with SSRS multi value parameter gives " Must Declare scalar Varaiable @StateID

    Hi All,
    I have one stored proc with @fromDate , @Todate and multivalue input
    parameter@StateID of type integer.
    When I run below stored proc via SSRS by selecting multiple values thru multiValue parameter into @StateID...it gives error saying "Must Declare scalar variable @StateID"
    Not sure what is wrong with the input parameters.
    ID is Integer type in all the 3 tables - dbo.EastCities, dbo.WestCities  , dbo.Country
    I need help fixing this  "Must Declare scalar variable @StateID" error
    This is the UDF split() I am using..
    Function:
    CREATE FUNCTION dbo.SplitStateID
    (    @List VARCHAR(MAX))
    RETURNS TABLE
    AS   
    RETURN   
    (        SELECT DISTINCT [Value] = CONVERT(INT, LTRIM(RTRIM(CONVERT( VARCHAR(12),SUBSTRING(@List, Number, CHARINDEX(',', @List + ',', Number) - Number))))
     FROM  dbo.Numbers       
     WHERE Number <= CONVERT(INT, LEN(@List))AND SUBSTRING(',' + @List, Number, 1) = ','    );
     GO
     SELECT [Value] FROM dbo.SplitStateID('10,30,50');
    Also, I have created dbo.Numbers table which is used in udf..
    reference url -- > 
    http://sqlblog.com/blogs/aaron_bertrand/archive/2009/08/01/processing-a-list-of-integers-my-approach.aspx
    SET NOCOUNT ON;
    DECLARE @UpperLimit INT;
    SET @UpperLimit = 10000;
    WITH n AS(   
    SELECT        rn = ROW_NUMBER() OVER        (ORDER BY s1.[object_id])   
    FROM sys.objects AS s1   
    CROSS JOIN sys.objects AS s2   
    CROSS JOIN sys.objects AS s3)
    SELECT [Number] = rn - 1
    INTO dbo.Numbers FROM n
    WHERE rn <= @UpperLimit + 1;
    CREATE UNIQUE CLUSTERED INDEX n ON dbo.Numbers([Number]);
    Stored procedure:
    Create Procedure dbo.CountrySelection
    ( @FromDate Date, @ToDate Date, @StateID Int)
    AS
    BEGIN
    set nocount on;
    SELECT * INTO #EastCities
    FROM (
    SELECT ID,Description from dbo.EastCities
    Where ID IN (SELECT Value from dbo.SplitStateID(@StateID))
    ) AS A
    SELECT * INTO #WestCities
    FROM (
    SELECT ID,Description from dbo.WestCities
    Where ID IN (SELECT Value from dbo.SplitStateID(@StateID))
    ) AS B
    SELECT * INTO #Country
    FROM (
    SELECT ID , Description, State,Country From dbo.Country
    ) AS C
    SELECT EC.ID AS East, WC.ID AS West , EC.Description AS EastDesc, WC.Description AS WestDesc, CT.State, CT.Country
    FROM #Country CT
    LEFT JOIN #EastCities EC ON CT.ID=EC.ID
    LEFT JOIN #WestCities WC ON CT.ID=WC.ID
    DROP TABLE #EastCities
    DROP TABLE #WestCities
    DROP TABLE #Country
    END
    Above 3 temp tables are joined by #Country.ID key
    It works fine when single value is passed in @StateID
    Exec dbo.CountrySelection '01/01/2010','02/01/2010',10
    It fails when multi value passed into @StateID
    Exec dbo.CountrySelection '01/01/2010','02/01/2010','10,30,40'
    SSRS error log shows "Must declare scalar variable @StateID"
    Need help in fixing this issue.
    Thanks,
    RH
    sql

    Visakh,
    I changed @StateID date type to varchar(max) and still I get this error.  
    System.Data.SqlClient.SqlException: Must declare the scalar variable "@StateID".
       at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
       at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
    I am running this SO in SSRS quert Type =Text
    Actually sp created on db2 database and due to some limitations I am running(via SSRS) this from different db1 database data source within the same db server. When I run this sp from SSRS query designer(edit query designer button) and pass
    multivalue parameters to @StateID as 10 , 20 it works and gives expected resultset.
    Thanks,
    RH
    sql

  • CASE Statement in Where Condition with Multi Valued parameter in SSRS

    Hi All,
    I am little confused while using CASE statement in Where condition in SSRS. Below is my scenario:
    SELECT
    Logic here
    WHERE
    Date IN (@Date)AND
    (CASE
    WHEN NAME LIKE 'ABC%' THEN 'GROUP1'
    WHEN ID IN ('123456', '823423','74233784') THEN 'GROUP2'
    WHEN ABC_ID IS NULL THEN 'GROUP3'
    ELSE 'GROUP4'
    END ) IN (@GROUP)
    So above query uses WHERE condition with CASE statement from @GROUP parameter. I want to pass this parameter as multi- valued parameter and hence I have used CASE statement IN (@GROUP).
    For @Date one dataset will pass the available and default values and
    for @GROUP parameters, another dataset will pass the available and default values.
    But this is not working as expected. Please suggest me where I am making mistake in the query.
    Maruthu | http://sharepoint-works.blogspot.com

    Hi Maruthu,
    According to your description, I create a sample report in my local environment. It works as I expected. In your scenario, if the selected values from the Date parameter contains some of the Date field values, the selected values from the GROUP parameter
    contains some of GROUPS (‘GROUP1’,’GROUP2’,’GROUP3’,’GROUP4’) and the corresponding when statement is executed , then the dataset returns the corresponding values.
    In order to trouble shoot this issue, could you tell us what results are you get and what’s your desired results? If possible, you can post the sample data with sample dataset, then we can make further analysis and help you out.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • SSRS : Reporting Services - Multi-Value Parameter Issue

    Hi,
    This problem is been around the blogs and forums for while now but may be it's not answered to the fullest. I couldn't get any satisfactory or completed solution on the issue so far, any clues/help will be highly appreciated.
    My scenario is very simple :-
    I am using SQL Server 2005 and SSRS. I need to develop a report which has a parameter value called Customer Name. The users should be able to select multiple customers from the list and sometimes Select All also.  I tried the following :-
    Created two data sets : Second dataset is just to populate the Customer Name
    Created a Report Parameter and mapped with the query parameter where it says  "Where CName in (@Parameter1)"
    Nothing seems to be working although I tried to apply all the existing half-way solutions currently available in the forums. May be I am not getting to the right solution.
    Here is what's happening :-
    When used '?' like "where CName = ?" then it's working fine for the single value. {Multi value query cannot be used with ?}
    But for multiple values when used @Parameter1 like "where CName in (@Parameter1)" it's giving the following error
    Cannot add multi value query parameter '@Parameter1' for data set 'Dataset1' because it is not supported by the data extension.
    However if commented this line it's pulling all the values whether or not selected from the parameter list.
    This is the basic thing which I was not able to get the desired result, in addition I was looking to get the Customer Name parameter selected with a partial entry as we use LIKE. Example :- If the user enters 'St' in the text box the list should show all the names starting from those two letters
    Starter
    Steve
    Steven
    Stevenson etc.
    I am not sure whether I'll will be able to get to this extent or not but until the multi value parameter, I am desperate to get the solution. So any sort of help/advise is highly appreciated.
    Regards,

    Hi,
    This problem is been around the blogs and forums for while now but may be it's not answered to the fullest. I couldn't get any satisfactory or completed solution on the issue so far, any clues/help will be highly appreciated.
    My scenario is very simple :-
    I am using SQL Server 2005 and SSRS. I need to develop a report which has a parameter value called Customer Name. The users should be able to select multiple customers from the list and sometimes Select All also.  I tried the following :-
    Created two data sets : Second dataset is just to populate the Customer Name
    Created a Report Parameter and mapped with the query parameter where it says  "Where CName in (@Parameter1)"
    Nothing seems to be working although I tried to apply all the existing half-way solutions currently available in the forums. May be I am not getting to the right solution.
    Here is what's happening :-
    When used '?' like "where CName = ?" then it's working fine for the single value. {Multi value query cannot be used with ?}
    But for multiple values when used @Parameter1 like "where CName in (@Parameter1)" it's giving the following error
    Cannot add multi value query parameter '@Parameter1' for data set 'Dataset1' because it is not supported by the data extension.
    However if commented this line it's pulling all the values whether or not selected from the parameter list.
    This is the basic thing which I was not able to get the desired result, in addition I was looking to get the Customer Name parameter selected with a partial entry as we use LIKE. Example :- If the user enters 'St' in the text box the list should show all the names starting from those two letters
    Starter
    Steve
    Steven
    Stevenson etc.
    I am not sure whether I'll will be able to get to this extent or not but until the multi value parameter, I am desperate to get the solution. So any sort of help/advise is highly appreciated.
    Regards,
    you speak spanish

  • Need to display the first 5 values of a Multi value parameter in SSRS report

    Hi All,
    I have SSRS report with multi value parameter. I need to display the parameter selection values in a text box. I've more than 50 records in the multi value parameter list. I've included the code to display "All" if I choose "select
    all" option otherwise it will show the selected values. But, I need to change the logic. I have to show only the 1st 5 records if I choose more than 5 records.
    How can I implement this?
    I have used the below code
    =iif(
    Parameters!Country.Count = Count(Fields!Country.Value,
    "Country")
    ,"All"
    ,iif(Parameters!Country.Count>5
    ,"Display the 1st 5 values"
    ,Join(Parameters!Country.Value,",")
    Regards,
    Julie

    Hi Julie,
    Per my understanding that you want to always show the first values from the param country to a textbox when you have select more then five values from the dropdown list, if you checked "select all", textbox will display "All", if
    you select <=5 amount of values. it will display the selected values, right?
    I have tested on my local environment and that you can create an hide parameter(Param2) to display just the first five values from the Country and when you select more then five values from country you will get the Join(Parameters!Param2.Value,",")
    to display.
    Details information below for your reference:
    Create an new DataSet2 which the Param2 will get the values from:
    SELECT     TOP (5) Country
    FROM        tablename
    Create an new param2 and hide this parameter, Set the "Available values" and "Default values" by select the "Get the values from a query"(DataSet2)
    You can also Specify first five value for the "Available values" and "Default values", thus you will not need to follow the step1 to create the dataset2
    Modify the expression you have provided as below:
    =iif(Parameters!Country.Count = Count(Fields!Country.Value, "DataSet1"),"All" ,iif(Parameters!Country.Count>5 ,Join(Parameters!Param2.Value,","),Join(Parameters!Country.Value,",")))
    Preview like below
    If you still have any problem, please feel free to ask.
    Thanks, 
    Vicky Liu
    If you have any feedback on our support, please click
    here.
    Vicky Liu
    TechNet Community Support

  • How to make multi value parameter optional in SSRS

    I HAVE REPORT IN SSRS 2005.
    I have @strjournal as multi value parameter. Allow blank is checked. Parameter values r assigned through query.
    select jornalno,jornalno as descr from tran_table 
    union select 'NULL','NULL' 
    So for @strjournal,  valuefield = jornalno  , label field = descr
    my main query i am giving,
    select .... from myTable where  (TRANKEY IN (@strjournal) AND @strjournal<> 'NULL' ) OR (TRANKEY LIKE '%' AND @strjournal = 'NULL')
    If i select 'NULL' its giving me correct result (returning all records as condition is like '%')
    if i select only 1 journalno (not 'NULL') also giving me correct result (i.e. only 1 record for which jornalno is selected)
    if i select more than 1 jornalnos then its giving me error "an expression of non boolean type specified in a context where condition is expected , near ',' "
    Any help ??
    h2007

    I have report in SSRS 2005 with multi value parameter.
    @strjournal is multi value parameter. Allow blank is checked. Values r assigned by below query
    select journalno,journalno as descr from tranTable
    union
    select 'NULL','BLANK'
    so for @strjournal, value field = journalno and label field = descr
    My main query is,
    select ---- from mainTable where
    (TRANKEY IN (@strjournal) AND @strjournal<> 'NULL' ) OR (TRANKEY LIKE '%' AND @strjournal = 'NULL')
    if i select 'NULL' gives me correct result (returns all rows as condition is like '%')
    if i select only 1 journalno (not 'NULL') also gives me correct result (returns only 1 record for which journalno is selected)
    if i select more than 1 journal nos gives me error, An expression of non-boolean type specified in a
    context where a condition is expected, near ',' 
    if i select more than 1 values (though i have selected it as multi-value) its giving me error.
    if i just give condition, 
    select ---- from mainTable where (TRANKEY IN (@strjournal)) 
    then i can select multiple
    h2007

  • How to set the default selection to "Select All" in a Multi valued parameter in SSRS 2008?

    Hello Everyone,
    How to set the default selection  to "Select All" in a Multi valued parameter in SSRS 2008?
    Regards
    Gautam S
    Regards

    You need to specify "Default Values" in the report parameter property. Choose similar option used in the "Available Values" option, this will allow the parameter to check "Select All".
    Regards, RSingh

  • How to design SSRS report to filter multi-value parameter?

    I developed an RDL which takes a multivalue parameter and I want to set a visibility expression or filter based on this parameter. This parameter uses an "All" value equal to '660E4583-7F29-4D37-8038-5096AE6A1A7F'.
    I want to make the main tablix visible if this parameter is set to this uniqueidentifier and invisible otherwise. How can I achieve this either in the tsql dataset or on the report side? I have tried numerous workarounds, but none have worked so far! I've tried
    different expressions and datatypes.
    Before I tried If/Else statements in the tsql dataset, but most recently I instead added flags to the tsql dataset for each condition and am trying to make this tablix only include the records with the flag matching the parameters chosen. But even this is not
    working for me.
    Here is sample data:
    create table #dummydata
    parameter varchar(max),
    b varchar(max)
    insert #dummydata values('660E4583-7F29-4D37-8038-5096AE6A1A7F','record 1'),('660E4583-7F29-4D37-8038-5096AE6A1vcd','record 2'),('660E4583-7F29-4D37-8038-5096AE6A1v52','record 3')
    select * from #dummydata
    And my filter expression in the RDL for this tablix is:
    =iif(Parameters!Modifier.Value(0)="660E4583-7F29-4D37-8038-5096AE6A1A7F",1,0)
    With datatype = integer and value = 1 However, this tablix is invisible with the above even when I choose "All" for the parameter value = default value. How can I make this tablix visible?
    Ryan D

    Hi Ryan D,
    After testing the scenario in my local environment, everything goes well. As per my understanding, I think this issue can be caused by the Available values in the Modifier parameter. Could you tell us the Available values of Modifier parameter in your scenario?
    The following scenario in my test is for your reference:
    I create a dataset with the sample data you posted.
    Add a multi-value parameter named Modifier in the report.
    Specify the following values in the Available Values of the parameter (please note that the value “All” should be located in the first place, because we use Parameters!Modifier.Value(0) in the filter):
    Label: All                 Value: ="660E4583-7F29-4D37-8038-5096AE6A1A7F"
    Label: A                   Value: ="1"
    Label: B                   Value: ="2"
    Label: C                   Value: ="3"
    Drag a table to the design surface, insert parameter and b fields in the table.
    Use the same expression as you said to add a filter in the tablix.
    We can refer to the following screenshot:
    If there are any other questions, please feel free to ask.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Display Blank Tablix when using multi value parameter in SSRS 2008 R2

    I have a main report which contains tablix1 and tablix2. Tablix1 is using DataSet1 and Tablix2 is using DataSet2. I have a multi value parameter set up with 71 items to choose from. My company owns 71 convenience stores and what I am doing is comparing sales
    for a hard coded date in DataSet1 versus a hard coded date in DataSet2, sales for the same date 1 year ago. Pretty simple, works great when both datasets return data. However, we have a store that we opened up about 4 months ago. The data is displayed
    in Tablix1, but since the store did not exist 1 year ago, there is no data for Tablix2. I have tried the "No Row Message" and Repeating Column and Row Headers, etc. When I choose all stores that existed last year, the report runs great. When I choose
    a store that existed last year and our new store (#39) that did not, the report messes up. The below image, you can see Tablix1 is good, but Tablix2 should be blank and only show the column headers. Instead it moved Store #40's Tablix1 beside it. If I
    run the report and just select store #39, Tablix1 runs as it should and Tablix2 shows The column headers and a blank row. It disappears as soon as I select multiple values.
    When you click the next page button, you will see Store 40's Tablix2 where it's Tablix1 should be and then a blank space where Tablix2 should be.

    Hi BassMan75,
    According to your description, there is a main report with subreport, since the store did not exist one year ago, there is no data for the subreport. You want to show tablix grid even through there is no data in subreport, right?
    Report data comes from datasets, if there is no corresponding value in the dataset, only column headers will be displayed in the report, we could not set the rows to blank, so we can’t achieve your goal directly. As a workaround, we can put one text box
    in the report with the message: No data for the store. In this way, if there is no data meets search condition, the message will be displayed in the report. Please refer to the following steps:
    Click and select the tablix.
    In Properties window, in No Rows section, in NoRowsMessage text box, type No data for the store.
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • Reporting Services Multi Value Parameter

    I have an SSRS 2005 report that I want to enable for multi value. However, I always run into the issue with the way it passes multiple values. How exactly do I get a multi-value parameter setup and working on both the report AND SQL side?
    I used the MS example of checking the multi checkbox for the parameter and then using a WHERE Column IN (@MultiParam), but this doesn't work. When you select one item, or is it multiple I can't remember, it fails. I really appreciate the help!
    Nathon Dalton
    Software Developer
    Systems Administrator
    Network Administrator
    Blog: http://nathondalton.wordpress.com

    Here's a sample of the SQL stored procedure that I use to get the dataset:
    Create
     proc [dbo].[spStoredProcName]
    @supervisor
    varchar(max) 
    as
    begin
    create
    table #tempSups
    Supervisor
    varchar(62)
    declare
    @i
    int
    select
    @i = 0
    select
    @i =
    charindex(',',@supervisor
    begin
    if @i
    <> 0
    while @i
    >0
    begin 
    insert
    into #tempSups
    values
    (ltrim(rtrim(left(@supervisor,
    @i-1))))
    select @supervisor
    =
    right(@supervisor,
    len(@supervisor)
    - @i)
    select @i
    =
    charindex(',',
    @supervisor)
    end
    end
    insert
    into #tempSups
    values
    (ltrim(rtrim(@supervisor)))
    From there, simply join your query to the temp table

  • Multi value parameter sniffing

    DECLARE
    @w1_p int,
    @w2_p int,
    @month_p int,
    @usdTHISweek_p float,
    @usdLASTweek_p float,
    @MASS_KIB_p nvarchar(max),
    @branch_eq_ccode_p nvarchar(max)
    set @w1_p=@w1
    set @w2_p=@w2
    set @month_p=@month
    set @usdTHISweek_p=@usdTHISweek
    set @usdLASTweek_p=@usdLASTweek
    set @MASS_KIB_p=@MASS_KIB
    set @branch_eq_ccode_p=@branch_eq_ccode
    select a.* from
    (SELECT
    case when cat.NAME='MASS' then 'MASS' else 'КИБ' end as mass_kib,
    cb.NAME_GEN as oper_typeGEN,
    cb.NAME as oper_type,
    case when br.name is null then 'не определен' else br.name end as BRANCH_EQ_CCODE,
    case when cat.NAME is null then 'Прочие' else cat.NAME end as 'segm',
    t.END_PRD_ID,
    sum(case when END_PRD_ID=@w1_p then t.FACT_WEEK else 0 end) as 'w1',
    sum(case when END_PRD_ID=@w2_p then t.FACT_WEEK else 0 end) as 'w2',
    sum(case when END_PRD_ID=@w1_p then t.FACT_MONTH else 0 end) as 'this week_month',
    sum(case when END_PRD_ID=@w1_p then t.PLAN_MONTH else 0 end) as 'plan_month',
    null as 'month_fact',null as 'month_plan',null as 'month_endprdid',
    sum(case when END_PRD_ID=@w1_p then t.FACT_YEAR else 0 end) as 'fact_year',
    sum(case when END_PRD_ID=@w1_p then t.PLAN_YEAR else 0 end) as 'plan_year'
    FROM [ODS_REPLICA].[stg].[CBClient_week] t
    inner join (select * from hnd.OLI_CBMEASID where RB_flag=1) cb on t.CB_MEAS_ID=cb.CB_MEAS_ID and t.BUSINESSTYPE_UK=cb.BUSINESSTYPE_UK
    left join stg.client cl on t.CLT_PIN_CD=cl.k_client and t.EN_BRANCH_ID=cl.branch_id
    left join hnd.OLI_BRANCH br on t.BRANCH_EQ_CCODE=br.BRANCH_EQ_CCODE
    left join hnd.OLI_CAT cat on cl.CAT=cat.CAT
    where END_PRD_ID=@w1_p and end_prd_id=@w2_p
    group by t.END_PRD_ID,cb.NAME,cb.NAME_GEN,cat.NAME,br.name
    union all
    SELECT
    case when cat.NAME='MASS' then 'MASS' else 'КИБ' end as mass_kib,
    cb.NAME_GEN as oper_typeGEN,
    cb.NAME as oper_type,
    case when br.name is null then 'не определен' else br.name end as BRANCH_EQ_CCODE,
    case when cat.NAME is null then 'Прочие' else cat.NAME end as 'segm',
    null,
    null,null,null,null,
    sum(t.FACT_MONTH),
    sum(t.PLAN_MONTH),
    t.END_PRD_ID,null,null
    FROM [ODS_REPLICA].[stg].CBClient_month_since2012 t
    inner join (select * from hnd.OLI_CBMEASID where RB_flag=1) cb on t.CB_MEAS_ID=cb.CB_MEAS_ID and t.BUSINESSTYPE_UK=cb.BUSINESSTYPE_UK
    left join stg.client cl on t.CLT_PIN_CD=cl.k_client and t.EN_BRANCH_ID=cl.branch_id
    left join hnd.OLI_CAT cat on cl.CAT=cat.CAT
    left join hnd.OLI_BRANCH br on t.BRANCH_EQ_CCODE=br.BRANCH_EQ_CCODE
    where END_PRD_ID=@month_p
    group by t.END_PRD_ID,cb.NAME,cb.NAME_GEN,cat.NAME,br.NAME
    )a
    where a.branch_eq_ccode in (@branch_eq_ccode_p) and a.MASS_KIB in(@MASS_KIB_p)
    Hi! I`m having great trouble sniffing multi-value parameter.
    The problem is that the query runs in SSMS about 5 seconds and in SSRS about 1 minute.
    My multi valued parameters are below. I added fx (="'" + JOIN(Parameters!MASS_KIB.Value, "','") + "'") in the parameters options for the dataset, but the results of the query are blank.
    I feel like i`m wrong with all the sp_exec and N'....stuff. 
    Please help me with that.
    Oleg
    @branch_eq_ccode_p,@MASS_KIB_p

    As I understand the filter condition is not correct.
    you need to make it as below for multi parameter to work correctly
    CREATE TABLE #branchcodes
    BranchCode varchar(50)
    INSERT #branchcodes
    SELECT Val
    FROM dbo.ParseValues(@branch_eq_ccode_p,',')
    CREATE TABLE #MASSKIBs
    MASSKIB varchar(50)
    INSERT #MASSKIBs
    SELECT Val
    FROM dbo.ParseValues(@MASS_KIB_p,',')
    SELECT ...
    FROM ..
    INNER JOIN #branchcodes bc
    ON bc.BranchCode = ac.branch_eq_ccode
    INNER JOIN #MASSKIBs mk
    ON mk.MASSKIB = a.MASS_KIB
    Also see ParseValues here
    http://visakhm.blogspot.in/2010/02/parsing-delimited-string.html
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

Maybe you are looking for