Slettet bruger
01. april 2009 - 08:31
Der er
4 kommentarer og
1 løsning
Opdeling af adresse
Hej
Jeg har en tabel med et adresse-felt. Kan det lade sig gøre i en forespørgsel at opdele indholdet i adresse-feltet, så det bliver til følgende felter:
Gadenavn
Husnr
Etage (hvis aktuelt)
Side-dør (hvis aktuelt)
02. april 2009 - 22:03
#1
Du kan måske klare dig med en quick-and-dirty i stil med nedenstående.
Her har du en række funktioner, der returnerer de enkelte komponenter.
BEMÆRK: Den er nok ikke 112% skudsikker; men den er tæt på ;o)
I din forespørgsel lægger du en række felter med indholdet:
Gadenavn: Find_Gadenavn(Adr)
Husnr: Find_Husnr(Adr)
osv
Koden (incl. lidt test) er:
Option Compare Database
Option Explicit
Sub Test_OpdelAdresse()
Dim Adr As String
Debug.Print "--------------------------------"
Adr = "Hovedgaden 42, 3. th"
Debug.Print Find_Gadenavn(Adr); "*"; Find_Husnr(Adr); "*"; Find_Etage(Adr); "*"; Find_Dør(Adr); "*"
Debug.Print
Adr = "Lille Kongensgade 42, 3. th"
Debug.Print Find_Gadenavn(Adr); "*"; Find_Husnr(Adr); "*"; Find_Etage(Adr); "*"; Find_Dør(Adr); "*"
Debug.Print
Adr = "Hovedgaden 42, 3."
Debug.Print Find_Gadenavn(Adr); "*"; Find_Husnr(Adr); "*"; Find_Etage(Adr); "*"; Find_Dør(Adr); "*"
Debug.Print
Adr = "Hovedgaden 42"
Debug.Print Find_Gadenavn(Adr); "*"; Find_Husnr(Adr); "*"; Find_Etage(Adr); "*"; Find_Dør(Adr); "*"
Debug.Print
End Sub
Function Find_Gadenavn(Adr As String) As String
Dim Gadenavn As String
Dim Husnr As String
Dim Etage As String
Dim Dør As String
Call OpdelAdresse(Adr, Gadenavn, Husnr, Etage, Dør)
Find_Gadenavn = Gadenavn
End Function
Function Find_Husnr(Adr As String) As String
Dim Gadenavn As String
Dim Husnr As String
Dim Etage As String
Dim Dør As String
Call OpdelAdresse(Adr, Gadenavn, Husnr, Etage, Dør)
Find_Husnr = Husnr
End Function
Function Find_Etage(Adr As String) As String
Dim Gadenavn As String
Dim Husnr As String
Dim Etage As String
Dim Dør As String
Call OpdelAdresse(Adr, Gadenavn, Husnr, Etage, Dør)
Find_Etage = Etage
End Function
Function Find_Dør(Adr As String) As String
Dim Gadenavn As String
Dim Husnr As String
Dim Etage As String
Dim Dør As String
Call OpdelAdresse(Adr, Gadenavn, Husnr, Etage, Dør)
Find_Dør = Dør
End Function
Sub OpdelAdresse(Adresse As String, Gadenavn As String, Husnr As String, Etage As String, Dør As String)
Dim a() As String
Dim i As Integer
Dim n As Integer
Gadenavn = ""
Husnr = ""
Etage = ""
Dør = ""
a = Split(Adresse, " ")
n = UBound(a)
i = 0
Gadenavn = ""
Do Until IsNumeric(Left(a(i), 1))
Gadenavn = Gadenavn & a(i) & " "
i = i + 1
Loop
Gadenavn = Left(Gadenavn, Len(Gadenavn) - 1)
If i <= n Then
Husnr = a(i)
i = i + 1
End If
Husnr = Replace(Husnr, ",", "")
Husnr = Replace(Husnr, ".", "")
If i <= n Then
Etage = a(i)
i = i + 1
End If
If i <= n Then
Dør = a(i)
End If
End Sub