Last Updated: 02 May 2024 08:25 by Steve
Created on: 02 May 2024 08:25
Type: Bug Report
Logical Functions throw when comparing Literal Int32 with Int64 Multivalue Report Parameter value that is outside the Int32 range

When testing integer values outside the range of System.Int32 (-2147483648 to 2147483647) for a multi-value integer parameter, I started to get the error:

An error has occurred while processing Report '___':
Cannot perform '=' operation on System.Int32 and System.Int64.

I narrowed this down to the "In" and "Between" operators. For example, the expression evaluating a literal integer value against the multi-value parameter:

= 0 In Parameters.IntegerMultiVal.Value

It appears that the literal integer is being converted, internally, to Int32 and compared against the contents of the multi-value parameter as Int64 - though the error only occurs when a value outside the Int32 range is present.

Direct comparison to a single parameter value outside the Int32 range appears to work fine:
= Parameters.IntegerSingleVal.Value = 0
Additionally, when replacing the literal integer in the expression with a single value parameter set to the same value, it evaluates without error:

= Parameters.ZeroVal.Value In Parameters.IntegerMultiVal.Value

This was tested and reproduced in the HTML5 report viewer and the standalone report editor.