[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2012
    Beiträge
    18
    Danke Birgitta.
    Das Feld ist numerisch, und trennen wollte ich es per EDTCDE in der printerfile.

    Probiere es jetzt mal aus

  2. #2
    Registriert seit
    Aug 2012
    Beiträge
    18
    Ich habe es jetzt mal so reingeschrieben:

    ZZDATE = %dec(%Date(SKBDAT: *ISO): *EUR);

    ZZDATE ist intern mit 8S 0 deklariert
    SKBDAT ist das Feld in der physical file, welches die Zahlen enthält.

    Fehler beim programmabruf:
    Darums-, Zeit- oder Zeitmarkenwert ist ungültig.

    Kann es sein, das dies nicht funktionieren kann, weil SKBDAT ein beliebiges 8S 0 num Feld ist, wo einfach Daten wie "20121011" per upddta reingeschrieben worden ?

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also man kann das auch anders machen

    D DAT1 S D DATFMT(*ISO)
    D DAT2 S D DATFMT(*EUR)

    MOVEL SKBDAT DAT1
    MOVEL DAT1 DAT2
    MOVE DAT2 ZZDATE

    Wichitg ist dafür nur das in SKBDAT gültige Werte enthält also 0 oder 20120231 wird nicht funktionieren?

    Desweiteren würde ich dir empfehlen, das ZZDATE nicht num. zu definieren sondern 10A und dann DAT2 über die Funktion %CHAR.

    Ganz billige Alternative über Datenstrukturen. Geht immer

  4. #4
    Registriert seit
    Aug 2012
    Beiträge
    18
    Das sieht schonmal gut aus, danke.

    Aber du sagst das Werte wie "0" oder "20121011" nicht funktionieren würden ?

    Das Problem ist ja, das SKBDAT genau diese Werte enthält

    Also in SKBDAT stehen halt die Daten im Format 20121011, welche ich gerne in 11102012 hätte....

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Jokersams Beitrag anzeigen
    Fehler beim programmabruf:
    Darums-, Zeit- oder Zeitmarkenwert ist ungültig.
    Du kannst ein numerisches Feld auf ungültige Datumswerte prüfen (OpCode TEST(DE) ).

    Einfacher ist es jedoch ungültige Datumswerte über eine Monitor-Group zu handeln. Das klappt sowohl bei den Built-In-Funktionen als auch bei den MOVE-Befehlen

    Code:
     /Free
       Monitor;
         MyNumDate = %Dec(%Date(NumDatum: *ISO): *EUR);
       On-Error;
         //Ungültiges Datum
       EndMon;
     /End-Free
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. SQL: Aus mehreren Feldern ein Datum erkennen
    By I0N in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-11-06, 12:44
  2. SQL DATUM
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 20-11-06, 18:37
  3. Datum in Query
    By heini in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-09-06, 10:10
  4. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 08:29
  5. Datum sicher in *EUR wandeln
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 27-04-06, 12:45

Berechtigungen

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