2016-02-23 4 views
-1

Я работаю над проектом, который отображает текст на мониторе как ссылку, но сталкивается с некоторыми проблемами с логикой. Кто-то нажимает кнопку, которая запрашивает InputBox, в которую они вставляют штрих-код со сканером.Если третий символ Not IsNumeric

У меня есть 2 типа номеров деталей, один такой «11n11110mch», что-то вроде этого «12311110mch». Мне нужен код, который проверяет, является ли третий символ числом. Конечной целью является отображение номера как «11. (некоторая буква) 111.10 MCH» и «123.111.10 MCH» в TextBox. Если я попробую «11n22210mch», я получаю сообщение об ошибке

Неверное преобразование из строки «n» в тип «Двойной».

на

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

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 проверяется на равенство, поскольку Not (True | False) является результатом метода IsNumeric.

+0

Как вы исправили заявление If? потому что это звучит так, как будто вы оставили его так же, как и раньше, вместо того, чтобы устанавливать его с помощью TryParse или, по крайней мере, исправлять его до первой строки моего ответа. –

+0

Получил! Спасибо. Я Im new для vb.net и используется для vba, синтаксис убивает меня в этом проекте. Можете ли вы объяснить всю вещь 'SubString (2,1)? что означает 2 и 1? – holi4683

+0

Если вы нажмете на него и нажмете F1, он откроет страницу MSDN, на которой будет все. Но это в основном так же, как функция Mid $, за исключением того, что первый индекс равен 0, а не 1. Итак, вы говорите, что подстрока VisPartID начинается со второго индекса (3-я позиция строки) и принимает 1 символ. –

Смежные вопросы