Avatar billede mim007 Nybegynder
24. februar 2005 - 11:53 Der er 20 kommentarer

hive postnummer ud - rense data

hej
Jeg har en database med 10.000 poster a la:
Kongensgade 110 6700 Esbjerg

Det hele står i samme felt. Jeg vil gerne hive postnummeret. Kan nogen hjælpe med en kode, der hiver de fire cifre ud?
Avatar billede terry Ekspert
24. februar 2005 - 11:59 #1
in this example the postal number is in the fourth position but this may not always be the case!
(Positions seperated by space)
Avatar billede mim007 Nybegynder
24. februar 2005 - 12:11 #2
nej. der er ikke en regular expression, der tager firecifrede nummer ud (four digits)?
Avatar billede mugs Novice
24. februar 2005 - 13:08 #3
Spørgsmålet hat været rejst før, og så vidt jeg husker kom er ikke nogen løsning af netop den årsag som terry påpeger:

Der er ikke nogen endegyldig regel for postnr. position i tekststrengen.
Avatar billede flim Nybegynder
24. februar 2005 - 13:12 #4
Nu er jeg ikke super skarp til programmering, men kan man ikke søge bagfra efter det sidste ciffer, og derefter tælle 4 cifre frem.

Postnummer og by vil altid være det sidste i en adresse, og da ingen bynavne indeholder tal, vil det vel kunne virke.

I dette tilfælde finder vi 0 og går 4 tal frem (til 6-tallet), og tæller så 4 frem.... 6700 :-)
Avatar billede flim Nybegynder
24. februar 2005 - 13:12 #5
Ja ok - jeg blander frem og tilbage godt og grundigt sammen, men håber I fik fat i pointen
Avatar billede terry Ekspert
24. februar 2005 - 13:24 #6
Vejle Øst
Avatar billede flim Nybegynder
24. februar 2005 - 13:25 #7
Øøøhh ok :-)

Hillerød her :D
Avatar billede terry Ekspert
24. februar 2005 - 13:32 #8
and there is no guaranty that there is a postnummer field an dthen you end up using some other numerical fields
Avatar billede flim Nybegynder
24. februar 2005 - 13:35 #9
it depends...

if he's always sure to have a postnumber and city, then it should be possible to make
Avatar billede mugs Novice
24. februar 2005 - 15:01 #10
flim > Hvordan vil du uddrage postnr fra denne adresse:

Nr. Lyndelse Hovedgade Nr 5, 1. th 9999 Nørre Lyndelse
Avatar billede flim Nybegynder
24. februar 2005 - 15:03 #11
SOm sagt...

Starte bagfra. Dvs jeg nu står på e'et i Lyndels_e_...

Nu ville jeg så gå frem mod starten indtil jeg finder en tal. Det første tal jeg finder er 9. Derefter går jeg endnu 3 cifre frem (da et postnummer altid er 4 cifre) - på den måde burde du kunne smide dine 4 cifre i en variabel :-)
Avatar billede flim Nybegynder
24. februar 2005 - 15:04 #12
Om det kan gøres i Access ved jeg faktisk ikke, men du kan i hvert fald i ASP/PHP osv...
Avatar billede stry Nybegynder
24. februar 2005 - 18:40 #13
Enig med flim:
Jeg kan ikke selv gennemskue hvordan den skal kodes, men i "klart sprog" må det være noget med at finde det første mellemrum efterfulgt af et ciffer, talt bagfra, og så tælle fire cifre op og det er så postnummeret.
Avatar billede charlotterj Nybegynder
26. februar 2005 - 00:19 #14
Denne funktion kan lægges i e modul og så finder den Postnr ud fra den definition, som I er kommet frem med:

Public Function FindPostnr(Streng As String) As String
    Dim pos As Long
    pos = InStrRev(Streng, " ")
    If IsNumeric(Mid(Streng, pos - 4, 4)) Then
        FindPostnr = Mid(Streng, pos - 4, 4)
    Else
        FindPostnr = ""
    End If
End Function

Så hvis du laver en forespørgsel kan du lave en ny kolonne, som ser således ud:

Postnr: FindPostnr([Adresse])
Avatar billede mugs Novice
26. februar 2005 - 00:29 #15
charlotterj > Hvad har du tænkt dig med dise:

100 Tórshavn
877 Valby Vigerslev Allé 18 Aller Press
Avatar billede charlotterj Nybegynder
26. februar 2005 - 00:34 #16
Hej Mugs

Hvorfor sover du ikke? ;o)

Dine eksempler følger ikke den syntaks, som blev beskrevet i spørgsmålet (gade, nr, postnr, by).
Så datoen ville jo måske stå sådan:
Aller Press Vigerslev Allé 18 877 Valby
og da vil koden også virke. Dog med foranstillet mellemrum. Derfor kan man sætte en Trim på:
Public Function FindPostnr(Streng As String) As String
    Dim pos As Long
    pos = InStrRev(Streng, " ")
    If IsNumeric(Mid(Streng, pos - 4, 4)) Then
        FindPostnr = Trim(Mid(Streng, pos - 4, 4))
    Else
        FindPostnr = ""
    End If
End Function
Avatar billede mugs Novice
26. februar 2005 - 00:43 #17
charlotterj > Ældre mennesker har ikke brug for så meget søvn ;o)

Nu skal vi ikke pinhugge spørgsmålet, og jeg er da også af den opfattelse, at spørgeren udelukkende mener "syddanske" postnumrer med 4 cifrer.

Jeg har ikke afprøvet din funktion, men vil gøre det ved først givne lejlighed. Ikke fordi jeg ikke tror den ikke fungerer, men jeg har det bedst med at afprøve forslagene.

Men lige nu gælder det en krimi af Jan Guillou.
Avatar billede mim007 Nybegynder
01. marts 2005 - 17:15 #18
nu er jeg ikke nogen SQL-haj, men hvordan vil ovenstående lyde, hvis jeg skal bruge det i access?
Avatar billede mugs Novice
01. marts 2005 - 18:00 #19
Ovenstående er ikke SQL men VBA. Prøv at indsætte koden i en kommandoknap i din formular.
Avatar billede Jørgen Kirkegaard Professor
07. marts 2005 - 22:53 #20
Yes, altså: Lav en form, som virker ved at trykke på en knap, f.eks. "KØR". Den har et event "Ved Tryk", hvor du lægger koden i (Du bad om kode, og det gav frk. Charlotte dig). Dit event løber alle poster igennem og for hver post lagres f.eks. postnr. iflg. rutinen i et nyt felt, eller i ny tabel. Hvis det er en éngangsfornøjelse, så læg nogle flere point (du HAR jo fået koden), eksportér tabellen til en tekstfil og send til hvem her der måtte ønske den, f.eks. Charlotte, som jo allerede har rutinen klar, Mugs den Ældre, som har knappen klar (eller mig-sagde-hunden).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester