В строке 58 пользовательского кода произошла ошибка: [BC30201] Ожидается выражение

При развертывании отчета SSRS выдает следующую ошибку:

В строке 58 пользовательского кода произошла ошибка: [BC30201] Ожидается выражение

Однако отчет отлично работает в режиме предварительного просмотра и правильно отображает поле.

Сегмент пользовательского кода здесь также написан и протестирован в visual studio.

Вот пользовательский код:

If (evaluationDate.Day = 31) Then '* affected line 
    returnValue.Append(String.Format("{0}{1:dd.MM}{2}", _
        If(index = 2, " und ", String.Empty), _
        New DateTime(evaluationDate.Year, evaluationDate.Month, lastDayOfMonthDictionary(evaluationDate.Month)), _
        If(index = 2, ".", String.Empty)))

End If

Как видите, проблема в блоке IF..THEN. valuationDate имеет тип DateTime и значение либо равно аргументу DateTime startdate или шесть месяцев вперед startDate - который является аргументом даты и времени в сигнатуре функции.

Я не вижу, что с этим не так, и мне нужно знать, что я могу сделать, чтобы решить эту проблему. Есть идеи?

1 ответ

Решение

Вывод - у SSRS есть плохой способ иметь дело с троичными, хотя он полностью ожидает VB-код в сегменте пользовательского кода.

Эта ошибка, которую я получил, имела неверное направление и даже указывала на неправильную строку - это была строка прямо под этой, которую я отметил в вопросе.

Обратите внимание на использование троичных: If(index = 2, " und ", String.Empty) - SSRS пытается запустить If-троицу (как вы объявили бы это в VB.NET) как If..Then блокировать - а потому нет Then найдено, и есть несколько аргументов через запятую, это запутывает SSRS и, таким образом, печатает Expression Expected

Способ решения этой проблемы - традиционный экспрессивный способ SSRS.

'Instead of this:
If(index = 2, " und ", String.Empty)

'Use This:
IIf(index = 2, " und ", String.Empty)

Это все равно должно позволить вам предварительно просмотреть ваш код (даже обычный If разрешен предварительный просмотр, но перерывы во время развертывания)

Другие вопросы по тегам