Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Telefonnummern trennen in Vorwahl-Rufnummer mit TSQL (https://www.delphipraxis.net/55525-telefonnummern-trennen-vorwahl-rufnummer-mit-tsql.html)

jensw_2000 22. Okt 2005 16:07

Datenbank: MSSQL • Version: 2000 SP3 • Zugriff über: TSQL

Telefonnummern trennen in Vorwahl-Rufnummer mit TSQL
 
Hallo Leute,

ich brauche mal einen kleinen Denkanstoß.

Beim Import von Kundendaten in meine Callcenter Software muss die Telefonnummer in folgendem Format vorliegen, damit sie für einige Programmfunktionen bzw den späteren Export sauber getrennt werden kann:
Code:
Ortsnetzkennzahl-Rufnummer
Es kommt immer wieder vor, das eine Importdatei kein Trennzeichen (Leerzeichen, Bindestrich o.Ä.) zwichnen der Vorwahl und der Telefonnummer hat.
Meine Kunden sind dann so kreativ, das sie die Importdatei mit Excel bearbeiten und bei den Telefonnummern einfach pauschal nach der 4. Ziffer ein "-" einfügen.

Bisher war das kein Problem.
Jetzt bin ich dabei ein Plugin zum Verkauf von "?-"DSL zu entwicken. (Besser gesagt, Montag ist Abgabetermin ... :shock: )
Für den Verfügbarkeitscheck werden Vorwahl und Telefonnummer als Eingabeparameter erwartet.

Damit der Kunde keine Möglichkeit mehr hat, die Telefonnummern nach Phantasie zu trennen möchte ich eine UDF basteln, die alle Sonder und Leerzeichen aus der Telefonnummer entfernt.
Dann soll die Rufnummer mit einer bestehenden Vorwahlenliste abgeglichen werden.
Die Funktion soll die fertig formattierte Rufnummer ("Vorwahl-Rufnummer") aus Ausgabeparameter zurückliefern.


Sicher könnte man die Telefonnummer nach und nach am Ende abschneiden und dann dann prüfen ob sie in der Vorwahlentabelle existiert. Das ist aber deutlich zu langsam.

Derzeit finde ich aber keinen Ansatz für eine bessere und schnelle Lösung ... :roll:

Habt ihr dazu eine gute Idee ?




Schöne Grüße,
Jens
:hi:

sakura 22. Okt 2005 16:10

Re: Schöne Grüße, Jens
 
Gib dem Thread bitte einen vernünftigen Titel ;)

Danke,
...:cat:...

jensw_2000 22. Okt 2005 16:13

Re: Schöne Grüße, Jens
 
Zitat:

Zitat von sakura
Gib dem Thread bitte einen vernünftigen Titel ;)

Danke,
...:cat:...

Fürchterlich, das beim einfügen eines Entwurfs immer der Titel überschrieben wird...
:roll: :mrgreen:

Duffy 22. Okt 2005 16:13

Re: Schöne Grüße, Jens
 
Hallo Jens,
warum trennst Du nicht schon bei der Eingabe? Klassisch gesehen zwei Eingabefelder für Vorwahl und Telefonnummer.

By
Claus

SirThornberry 22. Okt 2005 16:13

Re: Schöne Grüße, Jens
 
warum willst du irgendwas abschneiden? du hast doch alle vorwahlen jetzt sicher in einer Liste. Frag also einfach ab welche Telefonnummer (vorwahl + Telnummer) mit TestVorwahl anfängt und bei den gefunden musst du ja dann einfach von vorwhl + Telnummer am anfang die Länge von TestVorwahl abschneiden um die eigentliche Telefonnummer zu bekommen. Sollte auch nicht all zu lange dauern.

Ändere bitte auch den Betreff, der entspricht nicht den Regeln der DP.

Durch lesen der anderen Beiträge kam jetzt eine Frage bei mir auf. Sind derzeit in der DP Vorwahl und eigentliche Tel-Nummer in der DB nicht getrennt? Wenn dem so ist, hast du vor das weiter so zu belassen?

jensw_2000 22. Okt 2005 16:17

Re: Schöne Grüße, Jens
 
Zitat:

Zitat von Duffy
Hallo Jens,
warum trennst Du nicht schon bei der Eingabe? Klassisch gesehen zwei Eingabefelder für Vorwahl und Telefonnummer.

By
Claus

Das wäre der Optimalfall.

Leider unpraktikabel, weil die Callcenter ihre Kundendaten idR von großen Adresslieferanten kaufen oder weil sie die Daten von einem Auftraggeber vorsetzt bekommen.

Das Format der Rohdaten ist dabei sehr individuell.
Meist ist keine Trennung von Vorwahl und Rufnummer vorhanden.

SirThornberry 22. Okt 2005 16:25

Re: Telefonnummern Trennen in Vorwahl-Rufnummer mit TSQL
 
wäre es nicht das effektivste wenn du jetzt so eine vorwahlliste hast das du beim importieren der Telefonnummern dort schon die Vorwahl ermittelst und dann die daten in 2 Felder der Datenbank einträgst?

Duffy 22. Okt 2005 16:30

Re: Telefonnummern Trennen in Vorwahl-Rufnummer mit TSQL
 
Hallo Jens,

SirThornberry war schneller …

dann musst Du die Telefonnummer normalisieren in dem Du alles was nicht numerisch ist entfernst. Jetzt brauchst Du nur noch einen Check auf die Vorwahlen machen, in dem Du eine Vorwahlenliste (diese ist dann Pflicht) dazu benutzt, um eine Vorwahl zu klassifizieren. Wenn Du einen Treffer hast, ist es klar, der Rest der Telefonnummer ist die eigentliche Nummer.

bye
Claus

marabu 22. Okt 2005 16:36

Re: Telefonnummern Trennen in Vorwahl-Rufnummer mit TSQL
 
Hallo Jens,

bei einem binary search mit der normalisierten Rufnummer in der ONKZ-Tabelle wird (a) nie ein Treffer erfolgen und (b) die passende Vorwahl immer der Eintrag vor der insert position sein.

Grüße vom marabu

SirThornberry 22. Okt 2005 16:38

Re: Telefonnummern Trennen in Vorwahl-Rufnummer mit TSQL
 
marabu scheint die gleiche idee gehabt zu haben wie ich, hab nämlich grad mal sowas zum test geschrieben wie man die Vorwahl ermittelt.
Delphi-Quellcode:
var LVorwahlen: TStringList;
    LIndex: Integer;
begin
  LVorwahlen := TStringList.Create;
  LVorwahlen.Sorted := True;
  //LVorwahlen mit Vorwahlen aus DB füllen

  if LVorwahlen.Find(Edit1.Text, LIndex) then
    ShowMessage('es handlet sich um eine Vorwahl.')
  else begin
    if (LIndex > 0) and AnsiStartsText(LVorwahlen.Strings[LIndex-1], Edit1.Text) then
      ShowMessage('Vorwahl ist: ' + LVorwahlen.Strings[LIndex-1])
    else
      ShowMessage('Keine Vorwahl gefunden');
  end;

  LVorwahlen.Free;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz