Использование функции Right в операторе If вызывает синтаксическую ошибку

У меня есть однострочное значение с несколькими значениями в качестве поля параметра в отчете в построителе отчетов 3.0 (например, 20124, 20125). Теперь я хочу разделить эту строку и показать «Лето 2012» вместо «20124» и «Осень 2012» вместо «20125». Я использую Visual Basic. Вот мои две функции, которые я сделал в пользовательском коде Report Builder 3.0. . Ошибка во второй функции в строке "If Right(yearterm)...". Это дает мне синтаксическую ошибку. Если я пишу "String.Right", это дает мне ошибку: "'Right' is not a a член 'String'». Если я уберу весь оператор «If», отчет будет запущен, но «20124,20125» даст мне это: «, 2012, 2012».

Как я могу заставить это работать?

Public Function SplitParameterValues(ByVal parameter As Parameter) As String
    Dim result As String
    Dim a(0 To 10) As String
    a = Split(parameter.Value, ",")

    For i As Integer = 0 to a.length - 1
        result = result +", "  + YearTermTranslation(a(i))
    Next

    Return result
End Function

Public Function YearTermTranslation(ByVal yearterm As String) As String
    Dim result As String
    Dim term As String
    Dim year = Left(yearterm, 4)

    If Right(yearterm, 1) = 5
    Then term = "Fall"
    Else If Right(yearterm, 1) = 4
    Then term = "Summer"
    Else If Right(yearterm, 1) = 3
    Then term = "Spring"
    Else term = "Winter"
    End If

    result = term + " " + year

    Return result
End Function

person Flemming Hald    schedule 09.03.2012    source источник
comment
@ user1258439: Вы делаете это в VBA? У меня стойкое ощущение, что вы делаете это в vb.net? Причина, по которой я спрашиваю, заключается в том, что вы используете Dim year = Left (yearterm, 4) и возвращаете результат, который не является синтаксисом VBA/VB6.   -  person Siddharth Rout    schedule 09.03.2012


Ответы (1)


Проблема в том, что вы помещаете свои Then в отдельные строки, а также синтаксическую ошибку в вашем Else; это не имеет ничего общего с Right - если только это не ошибка копирования-вставки.

Public Function YearTermTranslation(ByVal yearterm As String) As String
    Dim result As String
    Dim term As String
    Dim year = Left(yearterm, 4)

    If Right(yearterm, 1) = 5 Then
        term = "Fall"
    ElseIf Right(yearterm, 1) = 4 Then
        term = "Summer"
    ElseIf Right(yearterm, 1) = 3 Then
        term = "Spring"
    Else
        term = "Winter"
    End If

    result = term + " " + year

    Return result
End Function

О, и если это на самом деле VB.NET... пожалуйста, изучите VB.NET.

Public Function SplitParameterValues(ByVal parameter As Parameter) As String
    Dim result As String = String.Empty
    Dim a() As String = parameter.Value.Split(","c)

    For i As Integer = 0 To a.length - 1
        result &= ", " & YearTermTranslation(a(i))
    Next

    Return result
End Function

Public Function YearTermTranslation(ByVal yearterm As String) As String
    Dim term As String
    Dim year As String = yearterm.Substring(0, 4)

    Select Case yearterm(yearterm.Length - 1)
        Case "5"c
            term = "Fall"
        Case "4"c
            term = "Summer"
        Case "3"c
            term = "Spring"
        Case Else
            term = "Winter"
    End Select

    Return term & " " & year
End Function
person Ry-♦    schedule 09.03.2012
comment
Минитек, Вау. Спасибо. Работает как шарм. - person Flemming Hald; 09.03.2012
comment
Пожалуйста, проверьте этот ответ как правильный, чтобы этот вопрос больше не приводил к разделу без ответа. - person Hari; 20.04.2012