[gelöst] xml Port Telefonnummer

13. Juni 2019 11:06

Mahlzeit,

ich exportiere in einem xml Port unter anderen die Telefonnummer aus dem Debitorenstamm.

Nun kann die Gegenseite eventuell vorhandene Sonderzeichen nicht mehr verarbeiten.

Sprich aus 089/123456 muss 089 123456 oder 089123456 werden.

Wie lösche ich Zeichen, wie / und - bei der Ermittlung des Wertes in der Ausgabe am einfachsten?
Zuletzt geändert von kaubonbon am 17. Juni 2019 07:53, insgesamt 1-mal geändert.

Re: xml Port Telefonnummer

13. Juni 2019 11:09

Mit DELCHR.

Re: xml Port Telefonnummer

13. Juni 2019 12:20

Hallo,

wobei Timo's spezial Variante hier sehr gut funktioniert:
Code:
NewTelNo := DELCHR(OldTelNo,'=',DELCHR(OldTelNo,'=','1234567890'));
(Ich hoffe, ich habe mich jetzt nicht verschrieben)

Die dafür sorgt, das aus der Telefonnr. zunächst alle Zeichen außer 0-9 entfernt werden. Damit hat man alle Zeichen, die man nicht haben will. Diese löscht man wiederum aus der originalen Telefonnr heraus, und hat damit nur noch 0-9 in der Nummer, und muss ich nicht darum kümmern, was da sonst noch drin stand.

Gruß Fiddi

Re: xml Port Telefonnummer

14. Juni 2019 10:08

Je nach Datenpflege muss ggf. mehr beachtet werden. Hier ein Auszug aus meinem Export:

Code:
//Alle Zeichen ausser Ziffern und "+" im String löschen
String := DELCHR(String, '=', DELCHR(String , '=', '+0123456789')) ;

//Erstes "+" durch "00" ersetzen
IF COPYSTR(String,1,1) = '+' THEN
  String := '00' + COPYSTR(String, 2);

//Übrige "+" Zeichen auch entfernen.
String := DELCHR(String, '=', DELCHR(String , '=', '0123456789'));

//Eventuell überflüssige "0" nach Ländervorwahl entfernen: 00XX0. Z.B. "0049(0)"
IF (COPYSTR(String,1,2) = '00') AND (COPYSTR(String,5,1) = '0') THEN
  String := '00' + COPYSTR(String,3,2) + COPYSTR(String,6);

//Zu kurze und zu lange Nummer leeren.
IF (STRLEN(String) < 4) OR (STRLEN(String) > 18) THEN
  String := '';

Re: xml Port Telefonnummer

14. Juni 2019 10:49

vandyke hat geschrieben:Je nach Datenpflege muss ggf. mehr beachtet werden. Hier ein Auszug aus meinem Export:



Mal eine Frage: falls man in C/AL nicht so fit ist, kann man doch diese Stammdatenqualitätsprüfung auch per TSQL im SQL-Server durchführen?
Ich kannte die DELCHR und COPYSTR Befehle nur ungefähr und hatte diese bisher nie angewendet.
Wenn ich diese Aufgaben machen müsste, würde ich das Management Studio aufmachen und per TSQL alles erledigen.
Ich weiss, TSQL hat die Gefahr, dass kein Validate in NAV ausgeführt wird, weshalb man damit keine PLZ geradebiegen sollte, aber für Felder ohne Validate dahinter passt es IMHO.

V.a. Bsp 2 und 3 leuchten nicht sofort ein:

https://navision24.de/funktionen/string/delchr.html

Re: xml Port Telefonnummer

14. Juni 2019 10:55

Und wie oft willst du das Ganze machen?
Wenn du nen Export hast der all x Tage ausgefuehrt wird und du jeden Tag neue Debitoren anlegst wird deine Methode nicht wirklich praktikabel sein

Re: xml Port Telefonnummer

14. Juni 2019 11:00

Ja, dann müsste man die Daten einmal bereinigen und dann per Programmierung im Validate Trigger der Telefonnummer gleich eine eigene Prüfung bauen, die nur Zahlen akzeptiert.

Re: xml Port Telefonnummer

14. Juni 2019 11:05

ERP-Berater hat geschrieben:V.a. Bsp 2 und 3 leuchten nicht sofort ein:

https://navision24.de/funktionen/string/delchr.html


Ja, die Beispiele sind manchmel sehr Praxisfern.
Ich nutze DELCHR nur für den oben genannten Fall, um bestimmte Zeichen aus einem String zu entfernen/zu behalten oder um ein vorangegangenes oder nachgestelltes | oder , Zeichen zu entfernen. (Wenn man sich z.B. einen Filter in einer Schleife baut)
Code:
3 Beispiele:
String := DELCHR(String, '=', DELCHR(String , '=', '0123456789')); //Bsp 1: Alles, außer Zahlen entfernen
String := DELCHR(String,'<>','|') //Bsp 2: Voran- u. nachgestelltes Pipezeichen entfernen
String := DELCHR(String,'<>',',') //Bsp 3: Voran- u. nachgestelltes Kommazeichen entfernen
Zuletzt geändert von Raik Zobel am 17. Juni 2019 08:43, insgesamt 3-mal geändert.

Re: xml Port Telefonnummer

14. Juni 2019 21:30

Hast Du die Arklärung von fiddi zur Zeile
Code:
String := DELCHR(String, '=', DELCHR(String , '=', '0123456789'));

durchgelesen? Wenn ja, dann würdest Du sehen, dass deine beide nachfolgenden Codezeilen mit erneutem DELCHR absolut überflüssig sind. Und wenn Du in Deinem String einige Nicht-Zahlen doch behalten möchtest, dann darfst Du die erste Codezeile gar nicht verwenden, diese löscht, wie gesagt alles, was nicht eine Zahl ist.

Re: xml Port Telefonnummer

17. Juni 2019 07:52

Danke Jungs!

Re: xml Port Telefonnummer

17. Juni 2019 08:41

Jupiter hat geschrieben:Hast Du die Arklärung von fiddi zur Zeile durchgelesen?

Das sollten 3 voneinander unabhängige Beispiele sein.