«Очистка» информации перед ее импортом в базу данных — довольно стандартная процедура — в конце концов, это одна из причин, по которой выtarИспользование базы данных заключается в том, что вы можете предсказуемо запрашивать эту базу данных по заданным критериям, верно… верно? Итак, как вы справляетесь с внешними ситуациями, когда, например, вам нужно импортировать информацию из файла, где один человек вводит «$», а другой предполагает, что вы знаете, что это моне?tary — или, что еще хуже, когда кто-то вводит «am» или «pm», а другой человек использует 24-часовой формат времени? Как обычно, существует множество способов решения проблемы, но один из них — проверить, является ли строка просто набором чисел или содержит какие-либо «не числа». С небольшим VBA такая проверка проста — и эта статья покажет вам, насколько просто…
Зачем нам это нужно?
Если вы импортируете какую-либо информацию, которую вы не контролируете, как она вводится или извлекается, то вы уже сталкивались с этой проблемой много (много!) раз — люди вводят данные таким образом,ost им удобно, а не единообразно. Это означает, что это только вопрос времени, прежде чем вам придется сделать он равномерный, прежде чем вы сможете его импортировать.
Типичным примером этого является случай, когда вам нужно импортировать данные в числовое поле, но когда вы смотрите на данные, вы видите, что некоторые разделили тысячи запятыми, другие добавили знак валюты — и кто знает что еще.
Небольшое предостережение!
Импорт неочищенных данных в вашу базу данных может привести к катастрофическим последствиям — в лучшем случае это может исказить ваши отчеты, в худшем случае вы можете столкнуться со всевозможными поломками — не позволяйте импорту «грязных» данных быть причиной пытаешься решить проблему с доступом все выходные!
Как «избавиться» от букв алфавита
Конечно, вы можете выполнить поиск и замену вручную, но это может занять время, и вы вполне можете что-то упустить (если вы ищете, например, только знаки доллара, вы можете пропустить знак евро или запятые, пробелы и т. д.) . Таким образом, самый простой и надежный способ сделать это — позволить Access выполнить тяжелую работу, используя приведенный ниже код.
По коду…
Открытая функция 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 Далее removeNonNumeric = CLng(outputString) End Function
Что делает код
Функция здесь очень прямолинейна. Все, что мы здесь делаем, это перебираем переданную строку по одному символу за раз. Если символ является числом, мы добавляем его к нашему темпу.rary строка, и когда мы закончим, мы конвертируем ее в «длинную».
Адаптация кода под себя
Как видите, функция возвращает «длинный» тип данных. Если вы работаете с целыми числами или числами с плавающей запятой и т. д., вам нужно соответствующим образом изменить функцию, чтобы она возвращала правильный тип значения для вашей базы данных.
Об авторе:
Митчелл Понд — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая ремонт SQL Server база данных и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com