[gelöst]Alle Textfelder einer beliebigen Tabelle durchlaufen

13. Dezember 2010 20:47

Hallo,

in der Tabelle Customer und der Tabelle Contact und noch 5 weiteren Tabellen gibt es in einigen Textfeldern Zeilenumbruchszeichen (CR-Zeichen).
Diese möchte ich alle entfernen.

Gibt es eine Möglichkeit alle Textfelder einer belibigen Tabelle zu durchlaufen oder am besten darauf nach CR zu filtern?

Ich habs mt RecordRef und FieldRef versucht komme aber nicht weiter.
Hier mal den Code bisher:
Code:
RecRef.GETTABLE(Cust);
FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN
  FldRef := RecRef.FIELDINDEX(i);
  Field.GET(18,FldRef); <- !!!!!!! HIER ERHALTE ICH EINEN LAUFZEITFEHLER
  IF FldRef.ACTIVE THEN
    IF Field.Type = Field.Type::Text THEN <- !!!!!!! Geht das auch direkt mit FldRef.TYPE = ???
      IF Field.Class = Field.Class::Normal THEN
        IF Field.RelationTableNo = 0 THEN
          IF STRPOS(FORMAT(FldRef.VALUE),CR) > 0 THEN
            MESSAGE('%1',FORMAT(FldRef.VALUE))


Irgend eine Idee?

Gruß
Ralf
Zuletzt geändert von ralf5 am 14. Dezember 2010 19:30, insgesamt 1-mal geändert.

Re: Alle Textfelder einer beliebigen Tabelle durchlaufen

13. Dezember 2010 20:51

ralf5 hat geschrieben:Hallo,

in der Tabelle Customer und der Tabelle Contact und noch 5 weiteren Tabellen gibt es in einigen Textfeldern Zeilenumbruchszeichen (CR-Zeichen).
Diese möchte ich alle entfernen.

Gibt es eine Möglichkeit alle Textfelder einer belibigen Tabelle zu durchlaufen oder am besten darauf nach CR zu filtern?

Ich habs mt RecordRef und FieldRef versucht komme aber nicht weiter.
Hier mal den Code bisher:
Code:
RecRef.GETTABLE(Cust);
FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN
  FldRef := RecRef.FIELDINDEX(i);
  Field.GET(18,FldRef); <- !!!!!!! HIER ERHALTE ICH EINEN LAUFZEITFEHLER
  IF FldRef.ACTIVE THEN
    IF Field.Type = Field.Type::Text THEN <- !!!!!!! Geht das auch direkt mit FldRef.TYPE = ???
      IF Field.Class = Field.Class::Normal THEN
        IF Field.RelationTableNo = 0 THEN
          IF STRPOS(FORMAT(FldRef.VALUE),CR) > 0 THEN
            MESSAGE('%1',FORMAT(FldRef.VALUE))


Irgend eine Idee?

Gruß
Ralf


Frage: wie ist es denn zu diesen Zeichen gekommen? Sind das die Zeichen, die wie Quadrate aussehen und durch die ASCII-ANSI Problematik entstehen, wenn man per Copy+Paste Daten von Excel nach NAV überträgt?

Re: Alle Textfelder einer beliebigen Tabelle durchlaufen

13. Dezember 2010 20:52

Schau mal, ob du mit diesem Codebeispiel weiter kommst:
http://www.sobersmartiestech.com/2010/1 ... drefs.html, dort auf "expand source"

Re: Alle Textfelder einer beliebigen Tabelle durchlaufen

13. Dezember 2010 21:04

Das Beispiel sieht ganz gut aus. :-D

Werde es gleich morgen früh testen.

Danke
Ralf

Re: Alle Textfelder einer beliebigen Tabelle durchlaufen

14. Dezember 2010 19:29

So, Test abgeschlossen.

Funktioniert super. :-D


In der Schleife :
Code:
IF _FieldRec.FIND('-') THEN REPEAT

...
Muß nur noch ein:
Code:
_fieldRef.VALUE(DELCHR(_theFieldValue,'=',CR));

rein.
und anschließend ein
Code:
_recordRef.MODIFY;
nach UNTIL _FieldRec.NEXT = 0;


Vielen Dank für den Link.

Gruß
Ralf

Re: Alle Textfelder einer beliebigen Tabelle durchlaufen

14. Dezember 2010 19:31

Lord_British hat geschrieben:
Frage: wie ist es denn zu diesen Zeichen gekommen? Sind das die Zeichen, die wie Quadrate aussehen und durch die ASCII-ANSI Problematik entstehen, wenn man per Copy+Paste Daten von Excel nach NAV überträgt?


Ja, genau so :-D