I'm building an SSRS report in BIDS. I need to give the end-user the ability to filter the report based on an approval status. However, there are four separate approval columns for each row - we'll call them ApprovalA, ApprovalB, ApprovalC, and ApprovalD; the status of each determines the overall status of that row. Each of the four can have one of four values - Approved, In Progress, Rejected, or N/A. My approach has been to create a derived column based on whether all four columns are some combination of Approved and N/A or Rejected and N/A, or whether In Progress is in any of the columns; I would then filter based on that derived column. Every time I run the report, though, I get an error message:

"[rsRuntimeErrorInExpression] The Value expression for the field 'Approval_Status' contains an error: Input string was not in a correct format."

As far as I can tell, my query should work, but it is pretty convoluted and I'm still new to SSRS. Any advice would be wonderful. My expression for the derived column is below:

=Switch((Fields!ApprovalA.Value OR Fields!ApprovalB.Value OR Fields!ApprovalC.Value OR Fields!ApprovalD.Value) = "Accepted" OR (Fields!ApprovalA.Value OR Fields!ApprovalB.Value OR Fields!ApprovalC.Value OR Fields!ApprovalD.Value) = "N/A", "Accepted", (Fields!ApprovalA.Value OR Fields!ApprovalB.Value OR Fields!ApprovalC.Value OR Fields!IsPFApproved.Value) = "Rejected" OR (Fields!ApprovalA.Value OR Fields!ApprovalB.Value OR Fields!ApprovalC.Value OR Fields!ApprovalD.Value) = "N/A", "Rejected", (Fields!ApprovalA.Value OR Fields!ApprovalB.Value OR Fields!ApprovalC.Value OR Fields!ApprovalD.Value) = "In Progress", "In Progress")
有帮助吗?

解决方案

Something like this might work and replicate your desired logic:

=Switch(
  (Fields!ApprovalA.Value = "Accepted" OR Fields!ApprovalA.Value = "N/A")
    AND (Fields!ApprovalB.Value = "Accepted" OR Fields!ApprovalB.Value = "N/A")
    AND (Fields!ApprovalC.Value = "Accepted" OR Fields!ApprovalC.Value = "N/A")
    AND (Fields!ApprovalD.Value = "Accepted" OR Fields!ApprovalD.Value = "N/A")
    , "Accepted",
  (Fields!ApprovalA.Value = "Rejected" OR Fields!ApprovalA.Value = "N/A")
    AND (Fields!ApprovalB.Value = "Rejected" OR Fields!ApprovalB.Value = "N/A")
    AND (Fields!ApprovalC.Value = "Rejected" OR Fields!ApprovalC.Value = "N/A")
    AND (Fields!ApprovalD.Value = "Rejected" OR Fields!ApprovalD.Value = "N/A")
    , "Rejected",
  Fields!ApprovalA.Value = "In Progress"
    OR Fields!ApprovalB.Value = "In Progress"
    OR Fields!ApprovalC.Value = "In Progress"
    OR Fields!ApprovalD.Value = "In Progress"
    , "In Progress"
)

You've got a syntax error; something like:

(Fields!ApprovalA.Value
  OR Fields!ApprovalB.Value
  OR Fields!ApprovalC.Value
  OR Fields!ApprovalD.Value) = "Accepted"

will cause an error as each of the clauses needs to evaluate to a boolean; you can't nest the fields like that.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top