Opplæring: Få tilgang til analyse av uttrykk

I veiledning: Analysering i Excel, viste jeg deg noen få uttrykk for å analysere inkonsekvente navnoppføringer. Logikken med å stole på plasseringen til bestemte tegn er like nyttig i Access, selv om Access ikke bruker de samme funksjonene.

Access-tabellen nedenfor lagrer navn i etternavn-etternavnsformat i et enkelt felt som heter Navn. Noen, men ikke alle oppføringer har mellom initialer. Ved å bruke følgende uttrykk er det ganske enkelt å trekke ut fornavnet:

 Fornavn: Venstre (Navn, InStr (Navn, "") -1) 
Funksjonen InStr () returnerer plasseringen til det første mellomromstegnet. Følgelig trekker funksjonen Venstre () ut tegn fra begynnelsen av oppføringen, opp til det første mellomromstegnet. Utelat -1-komponenten hvis du trenger å inkludere mellomromstegnet.

Å trekke ut etternavnet krever bare litt mer arbeid:

 Etternavn: Right (Navn, Len (Navn) - InStrRev (Navn, "")) 

Dette uttrykket bruker samme logikk, pluss noen. Lengden på hele navnet minus plasseringen av det siste tegnet returnerer navnet på tegnene som skal trekkes ut, og begynner med det siste tegnet. Ved bruk av Robin Banks evalueres dette uttrykket som følger:

 Til høyre ("Robin Banks", 11-6) 
 Til høyre ("Robin Banks", 5) 
 banker 

Som du kanskje mistenker nå, tar det enda mer arbeid å trekke ut den midterste initialen:

 MI: IIf (InStrRev (Navn, "")> InStr (Navn, ""), Midt (Navn, InStr (Navn, "") + 1, InStr (Navn, "" ) -2), "") 

IIf () -funksjonen sammenligner plasseringen av det første mellomromstegnet og det andre mellomromstegnet. Hvis de er de samme, er det bare ett mellomromstegn, og følgelig ingen mellominitial (og jeg kunne skrevet tilstanden på den måten, like enkelt). Hvis plasseringen til det siste mellomromstegnet er større enn plasseringen av det første mellomromstegnet, er det et mellominitial (eller noe!) Mellom for- og etternavnet. Mid () -funksjonen bruker deretter plasseringen av det første mellomromstegnet for å trekke ut to tegn mellom for- og etternavn. De to tegnene, i dette tilfellet, er det midterste initialet og periodetegnet etter hvert initial. Hvis noen navn har en periodekarakter og noen ikke, vil dette uttrykket gi inkonsekvente resultater. Ved bruk av Dan D. Lyons evaluerer dette uttrykket som følger:

 IIf (7> 4, Midt ("Dan D. Lyons", 4 + 1, 4-2), "") 
 IIf (True, Mid ("Dan D. Lyons", 5, 2), "") 
 Midt ("Dan D. Lyons", 5, 2) 
 D. 

Når du analyserer inkonsekvente data, må du finne et slags anker. I dette eksemplet er ankeret plassering av romtegnene. Det er viktig å merke seg at komponenten i alle uttrykkene ikke er en tom streng. Det er en bokstavelig mellomrom mellom de to anførselstegnene.

© Copyright 2020 | mobilegn.com