Как сгенерировать номер чека - PullRequest
0 голосов
/ 13 августа 2011

При переполнении стека я нашел вопрос Создать номер квитанции в этом диапазоне .

В ответах (от Адама Мараса) я нахожу этот код (очень интересный для меня):

Private Const FirstReceiptNumber As String = "GA00000"

Public Function GenerateReceiptNumber(ByVal lastNumber As String) As String

    If lastNumber.Length <> 7 Then
        Throw New ArgumentException("Incorrect length", "lastNumber")
    End If

    If lastNumber.StartsWith("G") = False Then
        Throw New ArgumentException("Incorrect start character", "lastNumber")
    End If

    Dim letterPortion As Char = lastNumber.Chars(1)

    If letterPortion < "A"c Or letterPortion > "Z"c Then
        Throw New ArgumentException("Non-letter second character", "lastNumber")
    End If

    If letterPortion = "I"c Or letterPortion = "O"c Then
        Throw New ArgumentException("Invalid second character", "lastNumber")
    End If

    Dim numericPortionString As String = lastNumber.Substring(2)
    Dim numericPortion As Integer

    If Integer.TryParse(numericPortionString, numericPortion) = False Then
        Throw New ArgumentException("Invalid numeric portion", "lastNumber")
    End If

    If numericPortion = 99999 Then
        If letterPortion = "Z"c Then
            Throw New ArgumentException("No more receipt numbers possible", "lastNumber")
        End If

        numericPortion = 0
        letterPortion = letterPortion + Chr(1)

        If letterPortion = "I"c Or letterPortion = "O"c Then
            letterPortion = letterPortion + Chr(1)
        End If
    Else
        numericPortion = numericPortion + 1
    End If

    Return String.Format("G{0}{1:00000}", letterPortion, numericPortion)
End Function

Я вставляю ее в форму Visual Studio 2010 и пытаюсь увидеть, что происходит на Form_Load.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TextBox1.Text = GenerateReceiptNumber() '<--HERE IS THE ERROR
End Sub

Но покажи мне ошибку в GenerateReceiptNumber().

Как мне использовать этот код, чтобы дать мне номер квитанции в TextBox1, когда я открываю эту форму?

Номер квитанции должен быть +1 в следующий раз с Form_Load.

Ответы [ 2 ]

0 голосов
/ 13 августа 2011

Вы можете написать в этом режиме:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TextBox1.Text = GenerateReceiptNumber("GA00000")
End Sub

или

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TextBox1.Text = GenerateReceiptNumber(FirstReceiptNumber)
End Sub
0 голосов
/ 13 августа 2011

Рад, что вы нашли мой ответ на предыдущий вопрос!

Теперь, с решением, которое я предоставил mr_dunski в другом вопросе, он потребовал, чтобы алгоритм создал номер квитанции на основе предыдущего номера.Таким образом, вам нужно начать с начального номера, чтобы начать последовательность:

GenerateReceiptNumber(FirstReceiptNumber)

или

GenerateReceiptNumber("GA00000")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...