I have an expression in SSRS that looks at a client #, county and eventually a service type to determine if an adjustment needs to be made.
The problem I have is that my Switch statement seems to always pick up the default value instead of acting on the service type.
This is my SSRS expression:
=IIf(Fields!ClientNo.Value="2139",
IIF(Fields!County.Value="RIVERSIDE" or Fields!County.Value="SAN BERNARDINO",
Switch(
UCase(Fields!ServiceType.Value)="NOT FOUND",-29.50,
UCase(Fields!ServiceType.Value)="PERSONAL",-20.50,
UCase(Fields!ServiceType.Value)="SUB",-20.50,
True,Fields!ServiceType.Value
)
,"")
,"")
The record that I'm looking at has a service type of "Not Found" and satisfies the criteria of the expression (see image).
Record that needs an adjustment
I cannot figure out why the Switch statement is not acting on "Not Found". Instead it drops to the default value and displays "Not Found". The adjustment amount should appear between the word "Service Fee" and the amount of $69.00.
In my SP, I perform an ltrim/rtrim on service type so that should remove extra spaces.
The expression looks straightforward to me. I don't know what I'm missing.
Thanks
Edited to correct spelling in San Bernardino
Related
I have been trying to figure this out for a while now and I cannot seems to get it to work. I am trying to pass 2 date parameters to an SSRS report. I am using SSRS 2016. The link that gets you to the report is
http://ServerName/Reports/report/SomeFolder/ReportName I have tried following the unanimously agreed upon approach of simply appending &StartDt=01/01/2020&EndDt=01/31/2020 and other combination and listed below.
http://ServerName/Reports/report/SomeFolder/ReportName&StartDt=01/01/2020&EndDt=01/31/2020
http://ServerName/Reports/report/SomeFolder/ReportName&StartDt=01-01-2020&EndDt=01-31-2020
http://ServerName/Reports/report/SomeFolder/ReportName&rs:Command=Render&StartDt=01/01/2020&EndDt=01/31/2020
http://ServerName/Reports/report/SomeFolder/ReportName&rs:Command=Render&StartDt=01-01-2020&EndDt=01-31-2020
In all cases I get the almost the same error, with the only difference being how I added the dates. The path of the item '/SomeFolder/ReportName&StartDt=01-01-2020' is not valid. The full path must be less than 260 characters long; other restrictions apply. If the report server is in native mode, the path must start with slash. (rsInvalidItemPath) I have confirmed the parameters match StartDt and EndDt appear exactly that way in my report, just for SAG I even made the prompts match and they are Non null able Date/Time fields. None of available values or default values. If nothing is selected it has the calendar icon to pick a date and everything runs perfectly.
I actually think I saw something on this back in a .Net explanation but it came out to be the link below. As usual I never mark my answer as correct, but leave it for the next person.
http://ServerName/ReportServer/Pages/ReportViewer.aspx?%2FFolderName%2FReportName&rc:showbackbutton=True&StartDt=01/01/2020&EndDt=01/31/2020
I didn't create the report, but there is a (not data-driven) subscription. There is one parameter with a default value (no issues). Then there are two multi-value parameters. When modifying the (mysteriously empty) multi-value parms (after the report failed to run) I can select ALL for each and set to run once--and the process succeeds. A file is written out to the folder per my intentions.
But when the date to run is set to the next morning, the execution fails with a message about invalid parm values. When I go in to check, those multi parms are empty again.
How do I fix this? (dumb question, I know)
What am I doing wrong? (also, very non-specific)
What am I leaving out? (of this question)
How do I search for this issue on SO? (I tried, but I couldn't find anything similar; maybe I'm missing some terminology; my search terms were "ssrs subscription multi value parameter not saved")
I have the following iif
IIF(LEN(Fields!IDENTITE.Value)=0,"Known manager","Unknown manager")
Yet for some specific case, nothing is appearing (e.g. no known nor unknown)
I checked the results with a sql query and nothing is appearing (the result is below)
I amended my iif to reflect this case
IIF(COUNT(Fields!IDENTITE.Value)=0,"Known manager","Unknown manager")
Yet the same issue is appearing
Any ideas on the why?
Thanks
Update : I tried the countrows as mentionned by #breez and I got this error
One of the possible way to deal with the absence of rows is the following:
Click on the tablix , look for NoRowsMessage option and type the text you want (example: "No known managers")
Next time there are no rows, this message will be displayed
PS: It is only doable for matrix, list and tables not for textbox. For more info, click here
SQL Server 2008 R2, using BIDS to design the report.
I have a table and I am trying to only show a certain row. Maybe there are better ways to do this, but I am coming across an error with the filter expression and regardless of how I achieve my initial task, I'd like to understand the filtering.
I started with the filter expression (set to type "Integer"):
RowNumber(Nothing) = 1
This gave the error:
Cannot compare data of types System.String and System.Int32.
I found the solution to this is to change the 1 to "=1" as 1 is evaluated as a string.
So I then had:
RowNumber(Nothing) = =1
That changed nothing, I got the same error.
Then I tried to do that to the first part of the expression:
=RowNumber(Nothing) = =1
This changed the error to a deployment problem (still builds, which is frustrating):
Error pvInvalidDefinition : The definition of the report '/ReportName' is invalid.
I then tried using CInt on RowNumber:
CInt(RowNumber(Nothing) = =1
Then I can deploy it, but the error just changes back to the first one:
Cannot compare data of types System.String and System.Int32.
It seems no matter what I try here I either can't deploy the report or I get an error that I'm comparing a string to an int.
RowNumber returns an integer, so it seems like this should work. I've tried using the name of the dataset in place of "Nothing" but that doesn't change what I'm seeing.
I realize there are many ways to solve my initial problem, but I am curious as to why the filter expression is invalid.
Its better to hide a row with visibilty property. Just click on any text box and go to visibily tab . You can now click on show or hode and go to expression.
That default to Hide . So write an expression there to hide the row.
=IIf(NOT(RowNumber = 1),TRUE,FALSE)
Let me know if you get any error
RowNumber is not available to use in a Tablix Filter.
Using RowNumber(Nothing) <> 1 as a Row visibility property fixed the issue.
Using BIDS you are not given any error that indicates what the problem is, but importing the report to Report Builder and deploying it from there will give a more descriptive error that, in the end, helped me to solve my problem.
To meet my expectation, I have tried this code in fontweight expression as well as field value expression
=iif(fields!RATE_SELECTED="A","BOLD","NORMAL")
I end up with an exception
Error BC30518: Overload resolution failed because no accessible '=' can be called with these arguments
Please help.
You are missing .Value in expression.
It should be:
=iif(Fields!RATE_SELECTED.Value="A","Bold","Normal")
Also, it should be "Bold","Normal" instead of "BOLD","NORMAL"
and due to some SSRS bug, if you try this, and it still doesn't work,then the trick is:
Try first clearing the previous values and then Click OK >> OK till you again reach the Report Designer screen.
From here, again right click your report item, say TextBox, right click >>TextBox properties >>Font>> fx (near Bold) and when you here
then, instead of manually writing the full expression, write only =iif( then click on Fields [see fig] and choose RATE_SELECTED ,similarly click on Constants and double click Bold, and then Normal
then, with your manual edit, the final expression should be like
=iif(Fields!RATE_SELECTED.Value="A","Bold","Normal")
HTH