Як перевірити, чи містить рядок алфавітний (нечисловий) символ через 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».

Адаптація коду відповідно до вас

Як бачите - функція повертає тип даних "long" - якщо ви працюєте з цілими числами, плаваючими комами тощо, тоді вам потрібно буде змінити функцію відповідно, щоб вона повертала правильний тип значення для вашої бази даних.

Вступ автора:

Мітчелл Понд - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі ремонт SQL Server база даних та програмні продукти Excel для відновлення. Для отримання додаткової інформації відвідайте WWW.datanumen.com

Поділитися зараз:

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