Как проверить, содержит ли строка буквенный (нечисловой) символ с помощью Access VBA

Поделись сейчас:

«Очистка» информации перед импортом в базу данных — довольно стандартная процедура. В конце концов, одна из причин, по которой вы начали использовать базу данных, заключается в том, чтобы иметь возможность предсказуемо запрашивать из неё данные по заданным критериям, верно? Как же обрабатывать внешние ситуации, когда, например, нужно импортировать информацию из файла, где один человек вводит «$», а другой предполагает, что это денежная сумма, или, что ещё хуже, кто-то вводит «am» или «pm», а другой использует 24-часовой формат времени? Как обычно, существует множество способов решения этой проблемы, но один из них — проверить, является ли строка просто набором чисел или содержит какие-либо «нечисловые» элементы. С помощью небольшого количества кода VBA такая проверка проста — и эта статья покажет вам, насколько она проста…

Зачем нам это нужно?

Символы данныхЕсли вы импортируете какую-либо информацию, на ввод или извлечение которой вы не можете повлиять, то вы наверняка сталкивались с этой проблемой много (очень много!) раз — люди вводят данные так, как им удобнее, а не единообразным способом. Это означает, что рано или поздно вам придётся... сделать он равномерный, прежде чем вы сможете его импортировать.

Типичным примером этого является случай, когда вам нужно импортировать данные в числовое поле, но когда вы смотрите на данные, вы видите, что некоторые разделили тысячи запятыми, другие добавили знак валюты — и кто знает что еще.

Небольшое предостережение!

Импорт неочищенных данных в вашу базу данных может привести к катастрофическим последствиям — в лучшем случае это может исказить ваши отчеты, в худшем случае вы можете столкнуться со всевозможными поломками — не позволяйте импорту «грязных» данных быть причиной пытаешься решить проблему с доступом все выходные!

Как «избавиться» от букв алфавита

Конечно, вы можете выполнить поиск и замену вручную, но это может занять время, и вы вполне можете что-то упустить (если вы ищете, например, только знаки доллара, вы можете пропустить знак евро или запятые, пробелы и т. д.) . Таким образом, самый простой и надежный способ сделать это — позволить Access выполнить тяжелую работу, используя приведенный ниже код.

По коду…

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

Что делает код

Код VBAФункция здесь очень проста. Все, что мы делаем, это перебираем переданную строку по одному символу за раз. Если символ является числом, мы добавляем его к нашей временной строке, а когда закончим, преобразуем ее в тип «long».

Адаптация кода под себя

Как видите, функция возвращает «длинный» тип данных. Если вы работаете с целыми числами или числами с плавающей запятой и т. д., вам нужно соответствующим образом изменить функцию, чтобы она возвращала правильный тип значения для вашей базы данных.

Об авторе:

Митчелл Понд — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая ремонт SQL Server база данных и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com

Поделись сейчас:

Комментарии закрыты.