【发布时间】:2012-03-21 05:17:15
【问题描述】:
在 StackOverflow 上,我发现了问题Generate a receipt number in this range。
在答案中(来自 Adam Maras)我发现这段代码(对我来说很有趣):
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 中为我提供收据编号?
下次使用Form_Load,收据号必须是+1。
【问题讨论】:
-
它(收据编号)应遵循哪些要求?
-
能否提供完整的错误信息?
-
请阅读第二行代码(函数声明),然后查看调用它的代码。 “错误”(顺便说一句,您没有提供)的原因应该非常清楚。 (如果不是,请研究它直到它是 - 这真的很明显。)
-
您为什么要创建多个帐户? stackoverflow.com/users/891578/pakkis 和 stackoverflow.com/users/888649/pakkis 我有 showed you 生成唯一收据编号的正确方法。你还有问题吗?
-
我做错了。对不起。删除其中之一。 (很多问题。我向用户和管理员道歉)