Jak sprawdzić, czy ciąg zawiera znak alfabetyczny (nieliczbowy) za pośrednictwem programu Access VBA

Podziel się teraz:

„Czyszczenie” informacji przed zaimportowaniem ich do bazy danych jest dość standardowe – w końcu jednym z powodów, dla których zacząłeś korzystać z bazy danych, jest możliwość przewidywalnego przeszukiwania jej pod kątem ustalonych kryteriów, prawda… prawda? Jak więc poradzić sobie z sytuacjami zewnętrznymi, na przykład z importem informacji z pliku, gdzie jedna osoba wpisuje „$”, a inna zakłada, że ​​wiesz, że to wartość pieniężna – lub, co gorsza, gdy ktoś wpisuje „am” lub „pm”, a ktoś inny używa zegara 24-godzinnego? Jak zwykle, istnieje wiele sposobów na rozwiązanie problemu, ale jednym ze sposobów jest sprawdzenie, czy ciąg znaków jest po prostu zbiorem liczb, czy też zawiera jakieś „nieliczby”. Z odrobiną VBA tego typu sprawdzenie jest proste – a ten artykuł pokaże Ci, jak proste…

Dlaczego musimy to zrobić?

Znaki danychJeśli importujesz jakiekolwiek informacje, nad którymi nie masz kontroli, jak są wprowadzane lub pobierane, na pewno wielokrotnie (wiele!) razy natknąłeś się na ten problem – ludzie wprowadzają dane w sposób, który jest dla nich najwygodniejszy, a nie w jednolity sposób. Oznacza to, że to tylko kwestia czasu, zanim będziesz musiał… robić jest jednolity, zanim będzie można go zaimportować.

Typowym przykładem tego jest sytuacja, w której musisz zaimportować dane do pola liczbowego, ale gdy spojrzysz na dane, zobaczysz, że niektóre oddzieliły tysiące przecinkami, inni dodali znak waluty - i kto wie, co jeszcze.

Krótkie słowo ostrzeżenia!

Importowanie danych, które nie zostały wyczyszczone do bazy danych, może być katastrofalne w skutkach - w najlepszym przypadku może wypaczyć Twoje raportowanie, w gorszym może skończyć się uszkodzeniem różnego rodzaju - nie pozwól, aby przyczyną były „brudne” importy danych Próbuję naprawić problem z dostępem cały weekend!

Jak „pozbyć się” znaków alfabetu

Oczywiście możesz wyszukiwać i zamieniać ręcznie, ale może to zająć trochę czasu i możesz coś przeoczyć (jeśli szukasz na przykład tylko znaków dolara, możesz przegapić znak euro lub przecinki, spacje itp.) . Dlatego najłatwiejszym i bardziej niezawodnym sposobem jest umożliwienie Accessowi wykonania ciężkiej pracy przy użyciu poniższego kodu.

Na kod…

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

Co robi kod

Kod VBAFunkcja jest tutaj bardzo prosta. Wystarczy, że przejdziemy pętlą przez przekazywany ciąg znaków, znak po znaku. Jeśli znak jest liczbą, dodajemy ją do naszego tymczasowego ciągu znaków, a po zakończeniu konwertujemy go na ciąg „long”.

Dopasowanie kodu do Twoich potrzeb

Jak widać - funkcja zwraca typ danych „long” - jeśli pracujesz z liczbami całkowitymi lub zmiennoprzecinkowymi itp., Będziesz chciał odpowiednio zmienić funkcję, aby zwracała właściwy typ wartości dla Twojej bazy danych.

Wprowadzenie autora:

Mitchell Pond jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym naprawa SQL Server baza danych i doskonałe oprogramowanie do odzyskiwania. po więcej informacji odwiedź www.datanumen.com

Podziel się teraz:

Możliwość dodawania komentarzy nie jest dostępna.