[NEWSboard IBMi Forum]
  1. #1
    Join Date
    Sep 2003
    Posts
    86

    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

  2. #2
    Join Date
    May 2002
    Posts
    1.120
    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 = %XLateSuch Ersatz Text
    Hoffe das hilft weiter
    Gruß
    Ronald

  3. #3
    Join Date
    Feb 2001
    Posts
    19.645
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Join Date
    Sep 2003
    Posts
    86
    danke - das mit " ' wird durch '' (2 mal das ' hintereinander) " hilft mir auch für die Zukunft weiter

  5. #5
    Join Date
    Feb 2001
    Posts
    19.645
    Dies gilt übrigens für fast alle Sprachumgebungen:
    CLP/CMD's
    RPG/LE
    SQL
    MS-DOS-Befehle
    Unix-Kommandos
    u.v.m.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Join Date
    Sep 2003
    Posts
    86
    danke - muss ich testen - arbeite nicht mit free RPG, aber versuche ich mal um zusetzen - melde mich wenn es geklappt hat - danke

  7. #7
    Join Date
    May 2002
    Posts
    1.120
    im nicht Free sieht es auch nicht viel anders aus...
    PHP Code:
    c                   For       Count1 to %LenSourceFld )          
    c                   If        %SubStSourceFldCount1) < *Blanks 
    c                   
    Eval      %SubStSourceFldCount1) = *Blanks 
    c                   
    EndIf                                            
    c                   EndFor                                           
    c                   Return    SourceFld 
    Gruß
    Ronald

  8. #8
    Join Date
    Sep 2003
    Posts
    86


    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

  9. #9
    Join Date
    Feb 2001
    Posts
    19.645
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Join Date
    Nov 2003
    Posts
    2.270
    Mit DSPPFM kannst du dir den Inhalt der Datei ansehen und dabei mit F10 die "Hexadezimalwerte anzeigen".

  11. #11
    Join Date
    Sep 2003
    Posts
    86
    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

  12. #12
    Join Date
    Nov 2003
    Posts
    2.270
    Ein X'FF' macht beim UPDDTA anscheinend auch Probleme.

Similar Threads

  1. AS/400 Daten in Excel
    By Neelix in forum NEWSboard Windows
    Replies: 7
    Last Post: 12-03-19, 12:06
  2. Daten aus IFS-Senden
    By nico1964 in forum IBM i Hauptforum
    Replies: 2
    Last Post: 27-11-13, 19:14
  3. Replies: 3
    Last Post: 25-02-02, 22:27
  4. PC Daten auf AS/400 sichern ???
    By muadeep in forum IBM i Hauptforum
    Replies: 8
    Last Post: 18-02-02, 21:15
  5. AS/400-Daten in Outlook
    By horst in forum IBM i Hauptforum
    Replies: 4
    Last Post: 04-10-01, 20:44

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •