Public Sub incrPR()
    Dim curValue As Integer
    Dim result As String
    Dim yr As String = Now.Year.ToString()
    Dim txt As String = "PR"
    Using con As SqlConnection = New SqlConnection(ConString)
        con.Open()
        Dim cmd = New SqlCommand("Select MAX(SpecialOrderNo) FROM SpecialOrder", con)
        result = cmd.ExecuteScalar().ToString
        If String.IsNullOrEmpty(result) Then
            result = "000"
        End If

        Int32.TryParse(result, curValue)
        curValue += 1
        result = curValue.ToString("D3") + "-" + yr + "-" + txt
        txtno.Text = result
    End Using
End Sub

Ожидаемый результат:

001-2018-PR
002-2018-PR
003-2018-PR

0
Ohubes Rente 9 Ноя 2018 в 05:22

1 ответ

Лучший ответ

Конкретная причина, по которой вы не видите желаемого поведения, находится здесь:

Int32.TryParse(result, curValue)

Если result равно "001-2018-PR", то TryParse завершится ошибкой, т.е. вернет False, и это означает, что curValue будет равно нулю. Это означает, что вы будете получать ноль КАЖДЫЙ раз. Если вы хотите проанализировать первую часть текста, сделайте это, а не разбирайте все, например

Int32.TryParse(result.Split("-"c)(0), curValue)

Я бы значительно изменил ситуацию, но это решит вашу непосредственную проблему.

0
jmcilhinney 9 Ноя 2018 в 03:35