Hausnummer aus Strassenadresse eliminieren

Hallo,

ich habe eine Tabelle, mit u.a. dem Datenfeld „Strasse“
Hier sind Strassen incl. Hausnummer gespeichert.
z.B. Hauptstrasse 5, An der Allee 6-10, usw.

Ich möchte nun die Hausnummern hieraus eliminieren.

Gibt es dazu eine Funktion?

Vielen Dank im voraus.

Bernd

Hallo,

eine Funktion hierfür gibt es nicht, Du mußt Dir selbst eine schreiben.
Diese könnte ungefähr so aussehen:

Public Function f_hausnummer(as_strasse As String) As String

Dim li_pos As Integer, li_laenge As Integer, li_laenge_hausnr
Dim ls_hausnummer As String

'Zunächst mal überflüssige Leerzeichen abschneiden
as_strasse = Trim(as_strasse)
’ Länge des kompletten Strings bestimmen
li_laenge = Len(as_strasse)

’ Den String Zeichen für Zeichen durchlaufen bis das 1. numerische Zeichen kommt
For li_pos = 1 To li_laenge
If isnumber(Mid(as_strasse, li_pos, 1)) Then
'Die Hausnummer wurde gefunden bzw. der Beginn der Hausnummer
’ Länge der Hausnummer bestimmen
li_laenge_hausnr = (li_laenge - li_pos) + 1
ls_hausnummer = Right(as_strasse, li_laenge_hausnr)
Quit
End If
Next

f_hausnumemr = ls_hausnummer

End Function

Aber Vorsicht, habe das ganze noch nicht getestet. Außerdem müssen hier noch solche Fälle wie leere Straßennamen, Straßen ganz ohne Hausnummer usw. abgefangen werden.

Grüße

Marion

Diese könnte ungefähr so aussehen:

Public Function f_hausnummer(as_strasse As String) As String

Dim li_pos As Integer, li_laenge As Integer,
li_laenge_hausnr
Dim ls_hausnummer As String

'Zunächst mal überflüssige Leerzeichen abschneiden
as_strasse = Trim(as_strasse)
’ Länge des kompletten Strings bestimmen
li_laenge = Len(as_strasse)

’ Den String Zeichen für Zeichen durchlaufen bis das 1.
numerische Zeichen kommt
For li_pos = 1 To li_laenge
If isnumber(Mid(as_strasse, li_pos, 1)) Then
'Die Hausnummer wurde gefunden bzw. der Beginn der
Hausnummer
’ Länge der Hausnummer bestimmen
li_laenge_hausnr = (li_laenge - li_pos) + 1
ls_hausnummer = Right(as_strasse,
li_laenge_hausnr)
Quit
End If
Next

f_hausnumemr = ls_hausnummer

End Function

Aber Vorsicht, habe das ganze noch nicht getestet. Außerdem
müssen hier noch solche Fälle wie leere Straßennamen, Straßen
ganz ohne Hausnummer usw. abgefangen werden.

Grüße

Marion

Dieser Vorschlag ist wie Marion schon bemerkt etwas „buggy“.

Denn der Anwender wird ganz schön blöd gucken, wenn aus der „Neue Strasse“ die „NeueStrasse“ wird.

Prinzipiell kann es keine Funktion geben, die dies 100%ig erledigt. Denn woher soll der Computer wissen, was bei den folgenden Strassen die Hausnummer ist und was nicht:

  • Hauptstrasse 9b
  • An der B65 6
  • Bundesstrasse 200
  • Mühlstrasse 4a - 10

Daher schlage ich vor, eine Prozedur zu schreiben, die an der letzten Stelle anfängt zu suchen und das Zeichen löscht, wenn es eine Zahl ist. Das soll solange passieren, wie eine Zahl gefunden wird.
Danach würde ich eine neue Prozedur schreiben, die alle Datensätze ausgibt, in denen Zahlen stecken. Die mußt du dann von Hand überprüfen.

  • Hauptstrasse 9b
  • An der B65 6
  • Bundesstrasse 200
  • Mühlstrasse 4a - 10

Wo ist das Problem mit Hauptstraße 9b, hm?
Schau noch mal nach, ich suche nicht nach Leerzeichen sondern nach numerischen Werten.

„An der B65 6“ führt tatsächlich zu Fehlern, das gebe ich Dir recht.

Daher schlage ich vor, eine Prozedur zu schreiben, die an der
letzten Stelle anfängt zu suchen und das Zeichen löscht, wenn
es eine Zahl ist. Das soll solange passieren, wie eine Zahl
gefunden wird.
Danach würde ich eine neue Prozedur schreiben, die alle
Datensätze ausgibt, in denen Zahlen stecken. Die mußt du dann
von Hand überprüfen.

Die Idee, bei der letzten Stelle des Strings mit dem Suchen anzufangen, da die Hausnummer eher dort zu suchen ist, ist auf jeden Fall besser als meine, aber was tun wir mit Leuten, die in Mannheim wohnen und solche Addressen wie S 4, 7 haben?
Hier versagen beide Lösungsansätze :smile:))

Grüße

Marion

Wo ist das Problem mit Hauptstraße 9b, hm?
Schau noch mal nach, ich suche nicht nach Leerzeichen sondern
nach numerischen Werten.

Ich hab mir den Code zwar nicht sehr genau angeschaut von dir, aber ich befürchte es bleibt dann „Hauptstrasseb“ stehen, oder?

„An der B65 6“ führt tatsächlich zu Fehlern, das gebe ich Dir
recht.

-)

Die Idee, bei der letzten Stelle des Strings mit dem Suchen
anzufangen, da die Hausnummer eher dort zu suchen ist, ist auf
jeden Fall besser als meine, aber was tun wir mit Leuten, die
in Mannheim wohnen und solche Addressen wie S 4, 7 haben?

Was ist das für eine Adresse? Aber wenn S4 die Strasse ist und 7 die Hausnummer, dann sollte mein Vorschlag funktionieren, bis auf das dann „S 4,“ stehenbleibt statt „S 4“.

Hier versagen beide Lösungsansätze :smile:))

Grüße

Marion

Aber wie gesagt, es kann keine 100%ige Lösung geben.

Ciao, Knuddelhasi

Stimmt, manuelle Nacharbeitung ist auf jeden Fall notwendig.

Grüße

Marion