Как да проверите дали низът съдържа азбучен (нецифров) знак чрез 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

Споделете сега:

Коментарите са забранени.