PDA

View Full Version : Aufgefundener Satz enthält ungültige Daten - upddta - nicht anzeigbare Daten



Seiten : [1] 2

falke34
10-07-14, 09:36
Hallo :)

leider komme ich nicht so recht weiter mit dem Problem :confused:

- also durch das kopieren von Textdaten aus Excel, Lotus Notes usw. , und das Einfügen in eine Erfassungsmaske werden "unsichtbare Zeichen" in den Datensatz übernommen - die beim Drucken Probleme machen -

wird der Satz mit UPDTAA aufgerufen, kommt die Fehlermeldung

"Aufgefundener Satz enthält ungültige Daten"

Nachrichten-ID . . . . : DFU0810 Bewertung . . . . . . : 20

Nachricht . . . : Aufgefundener Satz enthält ungültige Daten.
Ursache . . . . : Ein Zeichenfeld enthält ein oder mehrere nicht anzeigbare
Zeichen, ein numerisches Feld enthält ein oder mehrere Zeichen oder eine
Zahl paßt nicht in ein numerisches Feld.
Fehlerbeseitigung: Eingabetaste drücken, um diesen Satz zu umgehen.
Technische Beschreibung . . . . . . . : Ein Feld enthält ungültige Daten, wenn
eine der folgenden Bedingungen zutrifft: 1) Ein Zeichenfeld enthält Zeichen,
die kleiner als X'40' oder gleich X'FF' sind. 2) Das Vorzeichenhalbbyte
eines gepackten Felds ist nicht gleich X'F', X'C' oder X'D'. 3) Alle
Halbbyte eines gepackten Felds mit Ausnahme des Vorzeichenhalbbyte enthalten
einen Wert, der größer als X'9' ist. 4) Das Vorzeichenhalbbyte eines
gezonten Felds ist nicht gleich X'D' oder X'F'. 5) In einem gezonten Feld

Habst mit %CHECK versucht, dieses abzufangen versucht
Probleme macht mir das Zeichen ' , da ich dieses nicht mir in die Konstante aufnehmen kann und da dies ein Adressfeld ist muss ich eigentlich auch alle möglich Zeichen zulassen

Hab Ihr eine Idee wie ich dieses im RPGLE Pgm abfangen kann?

danke

malzusrex
10-07-14, 10:19
Hi,

also ich schmeiße mir in solchen Fällen die Zeichen alle raus.
Das ' wird durch '' (2 mal das ' hintereinander) in der Konstante definiert


d Such c '°^''#'
d Ersatz c ''
...
c Eval Text = %XLate( Such : Ersatz : Text)


Hoffe das hilft weiter
Gruß
Ronald

Fuerchau
10-07-14, 10:35
Ungültige Zeichen in einem Eingabefeld können da nur kleiner X'40' (*BLANK) sein.
Hier hilft ggf. eine kleine RPGLE-Funktion, die einfach alle Zeichen kleiner *BLANK eliminiert.

Ein Hochkomma ist eigentlich ein gültiges Zeichen.

d ReplaceChar pr 255 varying
d SourceFld 255 varying const

d ReplaceChar pi 255 varying
d SourceFld 255 varying const

d Count 10I 0
c/free
for Count = 1 to %length(SourceFld)
if %subst(SourceFld:Count:1) < *blank;
%subst(SourceFld:Count:1) = *blank;
endfor;
return SourceFld;

Mittels "MyFld = ReplaceChar(MyFld);" kannst du alle ungültigen Zeichen eliminieren.

falke34
10-07-14, 10:38
danke - das mit " ' wird durch '' (2 mal das ' hintereinander) " hilft mir auch für die Zukunft weiter

Fuerchau
10-07-14, 10:40
Dies gilt übrigens für fast alle Sprachumgebungen:
CLP/CMD's
RPG/LE
SQL
MS-DOS-Befehle
Unix-Kommandos
u.v.m.

falke34
10-07-14, 10:43
danke - muss ich testen - arbeite nicht mit free RPG, aber versuche ich mal um zusetzen - melde mich wenn es geklappt hat - danke

malzusrex
10-07-14, 10:53
im nicht Free sieht es auch nicht viel anders aus...


c For Count= 1 to %Len( SourceFld )
c If %SubSt( SourceFld: Count: 1) < *Blanks
c Eval %SubSt( SourceFld: Count: 1) = *Blanks
c EndIf
c EndFor
c Return SourceFld


Gruß
Ronald

falke34
10-07-14, 15:22
:confused:

bei mir funktioniert es einfach nicht !

C*** ungültige Zeichen entfernen
C 1 DO 30 I
C*** Fehlerbehandlung
C IF %SUBST(Anschrift:I:1) < *BLANK
C EVAL %SUBST(Anschrift:I:1) = *BLANK
C ENDIF
C ENDDO

Es kann nur so sein, das der Wert nicht kleiner *BLANK ist oder ?
hilfe

Fuerchau
10-07-14, 16:00
Per Debugger (STRDBG) kannst du dir den Inhalt auch mal Hex anzeigen lassen:

eval Anschrift:x

Alternativ ist dies auch per SQL möglich:

select hex(Anschrift) from myfile

Pikachu
10-07-14, 16:23
Mit DSPPFM kannst du dir den Inhalt der Datei ansehen und dabei mit F10 die "Hexadezimalwerte anzeigen".