Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am Dezember 01, 2015, 13:51:35

Titel: Telefonnummern nach Eingabe in kanonisches Format umwandeln
Beitrag von: datekk am Dezember 01, 2015, 13:51:35
Hallo :o)

In einem Formular wird für einen Datensatz die Telefonnummer erfasst. Die Erfassung kann unterschiedlich sein.. Z.B. 0123-123456 oder 00491234123456 oder (0123) 123456. Da ich in meiner Datenbank CTI Dienste verwende, also aus der Anwendung direkt die Nummer anwähle, möchte ich dass Access die Nummern in das Kanonische Format formatiert. https://de.wikipedia.org/wiki/Rufnummer#Schreibweisen (https://de.wikipedia.org/wiki/Rufnummer#Schreibweisen)

Das heißt aus allen o. g. Varianten soll folgendes entstehen: +49 (123) 123456... und zwar völlig automatisch.

(Wie) ist sowas möglich?

Titel: Re: Telefonnummern nach Eingabe in kanonisches Format umwandeln
Beitrag von: DF6GL am Dezember 01, 2015, 15:06:53
Hallo,

insgesamt wird das schwierig....

als erstes würde ich die Telefonnummer atomisieren, d.h. für die Landeskennung, die Vorwahl und die Telefonnummer selbst getrennte Felder vorsehen.

Bei den Tel-Nr, die schon "formatiert" sind, d. h. die Vorwahl(en) eindeutig zu erkennen sind, wäre ein automatisches Aufdröseln (z. B. mit left/right/mid-Funktionen oder regular expressions) möglich.

Bei allen anderen "Ziffern-Schwänzen" können automatisch nicht die Vorwahlen erkannt werden.
Titel: Re: Telefonnummern nach Eingabe in kanonisches Format umwandeln
Beitrag von: Wurliwurm am Dezember 01, 2015, 16:13:33
Zitat von: DF6GL am Dezember 01, 2015, 15:06:53
Bei den Tel-Nr, die schon "formatiert" sind, d. h. die Vorwahl(en) eindeutig zu erkennen sind, wäre ein automatisches Aufdröseln (z. B. mit left/right/mid-Funktionen oder regular expressions) möglich.

Ich hatte sowas in der Richtung schon mal gemacht mit regular expressions, zwar bei KFZ-Nummern, aber das Problem ist analog.

Jede Schreibweise der Telefonnummern aus dem Wikipedia ist mit einer regulären Ausdruck beschreibbar. Sprich: string_4711 entspricht regex_4711 oder nicht. Eine Lösung wäre, alle Schreibweisen der Telefonnummern als regexe in einer Tabelle zu speichern. Im VBA-Programm müßte man über alle diese regexe loopen und wenn der eingegebene Text einem dieser Regexe entspricht, den eingegebenen Text in das "kanonische Format" konvertieren. Das ganze am besten in einem Funktionsbaustein kapseln. Der Vorteil wäre, daß man jederzeit eine neue Schreibweise hinzu fügen konnte, ohne am Code rumbasteln zu müssen. Der Nachteil ist, daß es relativ abstrakte Programmierung ist.

Die Lösung mit getrennten Feldern und anschließenden verketten liegt da eher auf der Hand. Es kommt darauf an, wie flexibel das wirklich sein muß.