-
Aufgefundener Satz enthält ungültige Daten - upddta - nicht anzeigbare Daten
Hallo
leider komme ich nicht so recht weiter mit dem Problem
- 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
-
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
PHP-Code:
d Such c '°^''#'
d Ersatz c ''
...
c Eval Text = %XLate( Such : Ersatz : Text)
Hoffe das hilft weiter
Gruß
Ronald
-
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.
-
danke - das mit " ' wird durch '' (2 mal das ' hintereinander) " hilft mir auch für die Zukunft weiter
-
Dies gilt übrigens für fast alle Sprachumgebungen:
CLP/CMD's
RPG/LE
SQL
MS-DOS-Befehle
Unix-Kommandos
u.v.m.
-
danke - muss ich testen - arbeite nicht mit free RPG, aber versuche ich mal um zusetzen - melde mich wenn es geklappt hat - danke
-
im nicht Free sieht es auch nicht viel anders aus...
PHP-Code:
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
-
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
-
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
-
Mit DSPPFM kannst du dir den Inhalt der Datei ansehen und dabei mit F10 die "Hexadezimalwerte anzeigen".
-
das ist wirklich interresant
habe für den Test wirklich, nur den defekten Datensatz in der Testdatei
wenn ich mir diesen mit upddta anzeigen möchte - kommt der Fehler
"Aufgefundener Satz enthält ungültige Daten" (wie oben beschrieben)
mit DSPPFM
folgende Anzeige mit DSPPFM F10
D3C5D6FF D3404040 LEO L
jetzt kommt - im Pgm kann er keinen Wert finden der "kleiner *Blank" ist
- jetzt kommst
wenn ich RUNQRY auf die Datei mache und den Wert per copy und paste
in die Variable mit EVAL einfüge, (beim debbugen) und dann EVAL ANS:X
EVAL lan1:x
D3C5D63F D3404040 40404040 40404040 - LEO.L (woher kommt der Punkt?)
und dann findet er auch den Wert kleiner *BLANK eben "3F"
Verstehe ich einfach nicht
-
Ein X'FF' macht beim UPDDTA anscheinend auch Probleme.
Similar Threads
-
By Neelix in forum NEWSboard Windows
Antworten: 7
Letzter Beitrag: 12-03-19, 12:06
-
By nico1964 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 27-11-13, 19:14
-
By HJM in forum NEWSboard Windows
Antworten: 3
Letzter Beitrag: 25-02-02, 22:27
-
By muadeep in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 18-02-02, 21:15
-
By horst in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 04-10-01, 20:44
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks