Montag, 10. Dezember 2018

Wie kann man in einem Selektionsskript eine Adresse nach der Telefonnummer suchen, wenn deren genaue Schreibweise nicht bekannt ist?

Telefonnummern können in verschiedener Schreibweise in einer Datenbank vorliegen, was eine Suche erschwert (z. B. 03583 7770, 03583/777-0 etc.). Soll nur die Telefonnummer das Suchkriterium sein, können Sie im Bearbeitungsmodus - Adressenzuweisung  aus der Klappbox KOMMKANÄLE und den Typ ("Telefon") auswählen. In das Folgefeld tragen Sie dann einfach die Telefonnummer (oder einen Teil davon) ein. Beim Abgleich mit der Kommunikationstabelle von WINcontact werden alle Zeichen, die keine Ziffern sind, ignoriert. Oder anders ausgedrückt, unabhängig davon, in welcher Form die Telefonnummer in der Datenbank steht - sie wird durch reinen Ziffernvergleich gefunden:

Etwas schwieriger wird es, wenn Sie das Kriterium "Telefonnummer" in einem Selektionsskript verwenden möchten. Dort müssen Sie selbst dafür sorgen, dass beim Vergleich "Sonderzeichen" wie Space, Schrägstrich oder Bindestrich ignoriert werden. Ein solcher Skript könnte dann folgendermaßen aussehen:

SELECT
  ADRESSENID,
  KURZNAME,
  PLZ,
  ORT,
  B.ZUGANG
FROM {MAMDANT}..ADRESSEN A, {MAMDANT}..KOMMUNIKATION B
WHERE A.ADRESSENID=B.ADRESSEN_ID AND B.KOMMART='T'
 AND REPLACE((REPLACE((REPLACE(B.ZUGANG,' ','')),'-','')),'/','') 
  LIKE :Telefonnr +'%'

Wesentlich ist hier die WHERE-Anweisung. In ihr wird durch wiederholte Anwendung der SQL-Funktion REPLACE zuerst das Leerzeichen, dann der Bindestrich und zuletzt der Schrägstrich aus der in ZUGANG stehenden Telefonnummer entfernt. Dieser auf eine reine Ziffernfolge reduzierte Wert wird dann über den LIKE - Operatur mit der als Parameter übergebenen Telefonnummern (die auch nur Ziffern enthält), verglichen. Sie können diesen Skript im SQL-Manager ausprobieren oder als Selektionsskript für die Adressensuche / Adressenzuweisung verwenden.

Keine Kommentare:

Kommentar veröffentlichen