[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2003
    Beiträge
    90

    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
    Registriert seit
    May 2002
    Beiträge
    1.121
    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
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Sep 2003
    Beiträge
    90
    danke - das mit " ' wird durch '' (2 mal das ' hintereinander) " hilft mir auch für die Zukunft weiter

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Sep 2003
    Beiträge
    90
    danke - muss ich testen - arbeite nicht mit free RPG, aber versuche ich mal um zusetzen - melde mich wenn es geklappt hat - danke

  7. #7
    Registriert seit
    May 2002
    Beiträge
    1.121
    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
    Registriert seit
    Sep 2003
    Beiträge
    90


    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
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Mit DSPPFM kannst du dir den Inhalt der Datei ansehen und dabei mit F10 die "Hexadezimalwerte anzeigen".

  11. #11
    Registriert seit
    Sep 2003
    Beiträge
    90
    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
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Ein X'FF' macht beim UPDDTA anscheinend auch Probleme.

Similar Threads

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •