我正在开发一个项目,在显示器上显示文本作为参考,但遇到一些逻辑问题。有人点击了一个按钮,提示InputBox
用扫描仪插入条形码。
我有两种类型的零件号,一种是这样的“11n11110mch”,另一种是这样的“12311110mch”。我需要用于测试第3个字符是否为数字的代码。最终目标是在TextBox
中将数字显示为“11.(某些字母)111.10 MCH”和“123.111.10 MCH”。如果我尝试“11n22210mch”,我会收到错误消息
从字符串“n”到“Double”类型的转换无效。
at
thirdChara = Mid$(VisPartID, 3, 1)
我不确定如何纠正或完成我想要做的事情。
我的代码:
Public Sub btnScan_Click(sender As Object, e As EventArgs) Handles btnScan.Click
Dim ScanIDRaw As Object
'Clear Scan Value
ScanIDRaw = Nothing
'Display message, title, And default value.
ScanIDRaw = InputBox("Scan CDI", "InputBox")
Do Until ScanIDRaw IsNot ""
ScanIDRaw = InputBox("Part Number Needed, Scan CDI", "InputBox")
Loop
lblCDIPart.Text = ScanIDRaw
HUD.ReferenceCardDataPull()
End Sub
Public Async Sub ReferenceCardDataPull()
Dim PartID As String
Dim VisPartID As String
Dim thirdChara As String
'Other Code
'Something
'Something
VisPartID = Main.lblCDIPart.Text
thirdChara = Mid$(VisPartID, 3, 1)
If thirdChara = Not IsNumeric(thirdChara) Then
VisPartID = VisPartID.Insert(2, ".")
VisPartID = VisPartID.Insert(7, ".")
VisPartID = VisPartID.Insert(10, " ")
VisPartID = VisPartID.ToUpper
lblPart.Text = VisPartID
Else
VisPartID = VisPartID.Insert(3, ".")
VisPartID = VisPartID.Insert(8, ".")
VisPartID = VisPartID.Insert(11, " ")
VisPartID = VisPartID.ToUpper
lblPart.Text = VisPartID
End If
End Sub
答案 0 :(得分:0)
If Not isNumeric(thirdChara) Then
但你真的应该使用VB.Net方法而不是旧的VB6风格
dim position3 as integer
thirdChara = VisPartID.SubString(2,1) ' 2 because we're 0 based
if not integer.tryparse(thirdChara, position3) then
'do stuff if not a number
else
'it's a number
end if
tryparse将根据解析结果返回一个布尔值。成功解析后,它会将解析后的值存储到变量中(在本例中为Position3)
我还建议启用Option Strict,因为它会立即通知您不能将字符串隐式转换为布尔值。
含义:正在测试字符串thirdChara是否与IsNumeric方法的Not(True | False)结果相等。