„Čištění“ informací před jejich importem do databáze je celkem standardní – koneckonců, jedním z důvodů, proč jste začali používat databázi, je to, abyste se do ní mohli předvídatelně dotazovat podle stanovených kritérií, že… že? Jak tedy řešit externí situace, kdy například musíte importovat informace ze souboru, kde jedna osoba zadá „$“, ale jiná předpokládá, že víte, že se jedná o peněžní hodnotu – nebo ještě hůř, kdy někdo zadá „am“ nebo „pm“, ale jiná osoba použije 24hodinový formát? Jako obvykle existuje mnoho způsobů, jak k problému přistupovat, ale jedním ze způsobů je zkontrolovat, zda je řetězec pouze sadou čísel, nebo zda obsahuje nějaká „ne-čísla“. S trochou VBA je tento druh kontroly jednoduchý – a tento článek vám ukáže, jak jednoduchý…
Proč to musíme dělat?
Pokud importujete jakékoli informace, u kterých nemáte kontrolu nad jejich zadáváním nebo extrakcí, pak jste se s tímto problémem setkali již mnohokrát (mnohokrát!) – lidé zadávají údaje způsobem, který je pro ně nejpohodlnější, ne jednotným způsobem. To znamená, že je jen otázkou času, kdy budete muset… činit jednotná, než ji budete moci importovat.
Typickým příkladem je situace, kdy potřebujete importovat data do číselného pole, ale když se podíváte na data, uvidíte, že některé oddělily tisíce čárkami, jiné přidaly znak měny - a kdo ví co jiného.
Rychlé upozornění!
Import dat, která nebyla vyčištěna do vaší databáze, může být docela katastrofální - v nejlepším případě to může zkreslit vaše hlášení, v horším případě byste mohli skončit s rozbitými věcmi - nenechte „špinavý“ import dat být důvodem, proč zkouším to opravit problém s přístupem celý víkend!
Jak se „zbavit“ abecedních znaků
Samozřejmě můžete hledat a vyměňovat ručně, ale to může nějakou dobu trvat a možná vám něco unikne (pokud hledáte pouze například znaky dolaru, může vám chybět znak eura nebo čárky, mezery atd.) . Nejjednodušší a spolehlivější způsob, jak to udělat, je nechat Access tvrdou práci pomocí níže uvedeného kódu.
Do kódu ...
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 kód dělá

Přizpůsobení kódu tak, aby vám vyhovoval
Jak vidíte - funkce vrací datový typ „long“ - pokud pracujete s celými čísly nebo s plovoucími body atd., Pak budete chtít funkci odpovídajícím způsobem změnit tak, aby vracela správný typ hodnoty pro vaši databázi.
Úvod autora:
Mitchell Pond je expert na obnovu dat v DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně opravit SQL Server databáze a excelové softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com