chrislm
Goto Top

Über eine Abfrage Adresse Glätten

Hallo.
Ich benutze folgende Funktion in Excel um zwischen Straße und Hausnummer ein Leerzeichen zu bekommen:
=GLÄTTEN(LINKS(E2;MIN(WENN(ISTZAHL(--TEIL(E2;SPALTE(2:2);1));SPALTE(2:2)))-1) & " " & RECHTS(E2;LÄNGE(E2)-MIN(WENN(ISTZAHL(--TEIL(E2;SPALTE(2:2);1));SPALTE(2:2)))+1))
Das klappt auch sehr gut aber gibt es eine Möglichkeit die Formel als Abfrage in Access zu integrieren?

Content-Key: 207056

Url: https://administrator.de/contentid/207056

Printed on: April 23, 2024 at 17:04 o'clock

Member: colinardo
colinardo May 27, 2013 at 10:39:06 (UTC)
Goto Top
Hallo chrislm,
Was meinst du mit Abfrage ?

Grüße Uwe
Member: chrislm
chrislm May 27, 2013 at 11:01:29 (UTC)
Goto Top
Ich dachte so an eine Aktualisierungsabfrage
Member: colinardo
colinardo May 27, 2013 at 11:35:51 (UTC)
Goto Top
d.h. du verwendest eine Abfrage um Daten aus einer anderen Quelle in Excel
zu importieren in der die Strasse und Hausnummer nicht so formatiert sind wie du es willst ?
Dann mach die Abfragetabelle doch in ein extra Blatt und erstelle Referenzen auf die Zellen in einem anderen wo du dann die geünschte Änderung der Straße und Hausnummer vornimmst.
Member: chrislm
chrislm May 27, 2013 at 11:43:21 (UTC)
Goto Top
Ich importiere eine Exceldatei in die Accessdatenbank. Vorher prüfe ich halt in Excel die Straße und Hausnummer ober mit der Formel. Ich dachte das könne man auch einfach mit Access eine Abfrage erstellen die nach dem Import die Tabelle überprüft
Member: colinardo
colinardo May 27, 2013 at 12:06:52 (UTC)
Goto Top
Das könntest du mit einem Makro in Access erledigen, wie sehen denn die Rohdaten aus ?
Member: chrislm
chrislm May 27, 2013 at 12:33:23 (UTC)
Goto Top
Ist eine normale Tabelle mit
Anrede, Vorname, Name, Straße, PLZ und Ort
Nur das die Straßen halt blöd erfasst wurden, oft fehlt das Leerzeichen. Wie würde denn das Macro aussehen, hast du da ein Beispiel?
Member: colinardo
colinardo May 27, 2013 updated at 13:06:52 (UTC)
Goto Top
In Zeile 2 und 3 noch den Namen deiner Tabelle und den Spaltennamen in der die Straße drin steht eintragen, und auf die Tabelle loslassen
Sub processTable()
    tableName = "Tabelle1"  
    Spaltenname = "Straße"  
    Dim db As Database
    Dim rs As Recordset
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset(tableName, dbOpenTable)
    rs.MoveFirst
    Do While not rs.EOF
        strRaw = rs(Spaltenname).Value
        Set myRegExp = CreateObject("vbscript.regexp")  
        myRegExp.IgnoreCase = True
        myRegExp.Pattern = "([^\d]*)\s*(\d+[a-z]*)"  
        Set myMatches = myRegExp.Execute(Trim(strRaw))
        If myMatches.Count >= 1 Then
            Set myMatch = myMatches(0)
            If myMatch.SubMatches.Count >= 1 Then
                strFinal = Trim(myMatch.SubMatches(0)) & " " & myMatch.SubMatches(1)  
            End If
        End If
        rs.Edit
        rs(Spaltenname).Value = strFinal
        rs.Update
        rs.MoveNext
    Loop
 rs.Close
End Sub

Grüße Uwe
Member: Biber
Biber May 27, 2013, updated at Jun 25, 2013 at 19:09:55 (UTC)
Goto Top
Moin chrislm,

unabhängig von der handwerlichem Umsetzbarkeit ist es ganz, ganz äh-bäh, aus einem Quellsystem (hier: Excel) Daten zu importieren und beim Import Inhaltlich zu manipulieren. Die Anforderung miss immer an den Datenlieferanten gehen.

Wenn du die Strasse/Nr-Daten nur ohne Leerzeichen bekommen kannst, dann IST ES HALT SO RICHTIG.


Ich kann dir ohne viel Nachzudenken 37 Fälle konstrien, dan denen deine Excel/colinardos regEx-Manipulationen richtig in die Grütze fassem:
"Strasse des 17.Juni 37"
"Platz des 1.Mai 3"
"Kirchstr.33b-d
"In der Mietskaserne 145 4.Etage li"
"Hauptstr. 12 (bei 123consult 3x klingeln)"
"3-Schanzen-Allee 12"
...

...und das sind nur die Beispiele, die mir sogar an einem ver###ten Montach einfallen.

Wenn Strasse/Nr ein ungeprüftes Prosa-Feld ist, das kannst du es nicht in einen halb Text/halb Numerisch-Teil trennen und ästhetisch formatiert wieder zusammenlöten.

Was machst du denn z.B., wenn du im Access Strasse/Nr als Text(50) vorgehen hast, als Importfeld auch ein Text un Länge 50 kommt (also gerade so gültige Länge) und du da ein Leerzeichen reinpressen willst??? Dann crasht dein Import mit 8000 Datensätzensätzen, weil der Datenlieferant einen Datensatz dabei hatte mit einem Feld in zulässiger Länge, aber ohne leerzeichen zwischen Strasse und Nr.?

Ich halte das für eine suboptimale Idee

Grüße
Biber
Member: chrislm
chrislm May 27, 2013 updated at 13:42:10 (UTC)
Goto Top
Das funktioniert klasse, vielen dank!
Ich mache ein Import über ein VBS Modul und rufe danach über Call das Script auf. Falls da was kaputt geht, bedarf es etwas Handarbeit. Aber so habe ich mehr repariert als kaputt gemacht. Denn die Adressen werden noch einmal abgeglichen bei einem externen Dienstleister und der braucht zwingend ein Leerzeichen zwischen Straße und Hausnummer.

Dennoch danke an alle die sich mit der Problematik auseinandersetzten.