Возвращаемое значение должно быть
151010 ~ 1220
На самом деле не было много изменений, необходимых для преобразования его в функцию SSRS VB. В SSRS функция не работает напрямую с полем, поэтому вам необходимо передать их в функцию в качестве параметров. Большинство остальных VB в вашей старой функции должны работать так же в SSRS - я просто удалил функции ToText, которых нет в SSRS.
Когда вы вызываете функцию из текстового поля, вы пропускаете поля.
=code.Formula1(Fields!HktrExchngDayFrom.Value, Fields!HktrExchngDayTo.Value)
А вот и функция:
Public Function Formula1(ByVal fromExDay as String, ByVal toExDay as String) as String
Dim sYr as String
Dim sMonth as String
Dim sDay as String
fromExDay = Replace (fromExDay, ",", "" )
fromExDay = Replace (fromExDay, ".", "" )
toExDay = Replace (toExDay, ",", "" )
toExDay = Replace (toExDay, ".", "" )
if Len (Trim(fromExDay)) > 0 and Len (Trim(toExDay)) > 0 then
sYr = Right(Left(fromExDay, 4),2)
if sYr <> "99" then
sYr = LEFT(CStr(CDbl(sYr) + 12), 2)
end if
sMonth = Mid(fromExDay, 5, 2)
sDay = Left(Right(fromExDay, 4), 2)
fromExDay = sYr + sMonth + sDay
sYr = Right(Left(toExDay, 4), 2)
if sYr <> "99" then
sYr = LEFT(CStr(CDbl(sYr) + 12), 2)
end if
sMonth = Mid(toExDay, 5, 2)
sDay = Left(Right(toExDay, 4), 2)
toExDay = sYr + sMonth + sDay
Formula1 = fromExDay + " ~ " + toExDay
Else
Formula1 = ""
End If
End Function
Я думаю, что вычисления sDay неверны.
sDay = Left(Right(fromExDay, 4),2)
Кажется, опять месяц. Вероятно, должно быть
sDay = Right(fromExDay, 2)
или, если это может быть более длинная строка, используйте MID:
sDay = Mid(fromExDay, 7, 2)
Что меняет результат на:
151031 ~ 12