[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2002
    Beiträge
    21

    Unhappy numerisches Feld erstellen

    Hallo alle zusammen,
    nachdem es bei der ersten Frage ja so perfekt geklappt hat(nochmals Danke) werde ich dies Forum ein wenig "ausnutzen" Keine Sorge, wenn ich helfen kann, werde ich dies auch machen. Nun die (einfache) Frage: wie kann ich aus einem normalen alphanumerischen Feld ein numerisches mit 0 Nachkommastellen machen ?? Evtl ein Ergebnisfeld in Query ??

    Besten Dank im voraus
    Michael

  2. #2
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Meinst du im Displayfile, oder im PF?


    [Dieser Beitrag wurde von Steven am 04. Dezember 2002 editiert.]

  3. #3
    Registriert seit
    Sep 2002
    Beiträge
    21

    Cool

    Oups, ganz vergessen. Ich meine natürlich eine PF Datei.
    Sorry

  4. #4
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Schreib bei der Längenangabe einfach die Länge, dann 2 Leerschritte und dann 0. Dann hast du nummerisch mit 0 nachkommastellen. Die 0 gibt die Kommastellen an.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Ich nehme an, dass das Feld in der Datei so bleiben soll wie es ist und nur bei der Auswertung eine Umwandlung in numerisch erfolgen soll.

    Dies geht leider nicht mit Query sondern nur mit SQL (probier mal den Query-Manager STRQM).

    SQL erlaubt das sog. "casten" von Variablen.
    Dazu gibt man nur den gewünschten Typ und in Klammern den Quelltyp, bei numerischen Feldern ggf. noch Länge und Nachkomma an.

    Z.B.:

    char(>NumField< ) as MyChar -- Umwandlung numerisch nach Alpha, der numerische Wert wird allerdings linksbündig ausgerichtet

    dec(>CharField<, 11, 0) as MyDec -- Umwandlung Zeichen in Numerisch mit 11 Stellen und 0 Nachkomma, aber Achtung: das Zeichenfeld darf nur Ziffern enthalten, ggf. führende Leerzeichen, 1 führendes Vorzeichen (+/-) und ein Dezimalzeichen (Punkt, Komma) dass durch die aktuellen SQL-Einstellungen festgelegt ist. Tausendertrennung ist schon nicht mehr erlaubt. Ansonsten werden ungültige Daten geliefert, bzw. der SQL bricht bei diesem Satz ab.

    Wenn das Zeichenfeld aber immer einen fest formatierten Dezimalwert enthält, hilft die Funktion "substr" und "concat":

    dec(substr(charfld, 2, 5) concat substr(charfld, 9, 2), 11, 0) as MyDec

    Es führen viele Wege zur Typumwandlung !

    Leider ist ein Prüfen auf korrekten Feldinhalt etwas schwierig:

    case
    when length(trim(charfld))=0 then dec(0, 11, 0)
    when translate(upper(charfld), "ZYXW...CBA", "ABC...WXYZ) <> charfld then dec(0, 11, 0)
    else dec(charfld, 11, 0)
    end as MyDec

    Erklärung:
    trim() entfernt Leerzeichen am Anfang und Ende
    Length() gibt die Länge des Feldes zurück
    => 1. Fall (case) also: Feld ist leer

    upper() wandelt Kleinbuchstabein in Großbuchstaben
    Translate() ersetzt jedes Zeichen des 3. Arguments duch das entsprechende Zeichen des 2. Argumentes der entsprechenden relativcen Position des 3. Argumentes.
    Wenn kein Zeichen zum Ersetzen vorhanden, bleibt das Zeichen unverändert.
    Das Argument 2 und 3 ersetzt also jedes Alphazeichen durch ein beliebiges anderes Alphazeichen. Sind also Alphazeichen vorhanden ändert sich der Feldinhalt.
    => 2. Fall (case) also: Feld ist wahrscheinlich nicht numerisch

    => 3. Fall (else) Typumwandlung scheint möglich

    Viel Spaß beim Probieren !
    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

Similar Threads

  1. verschlüsseltes zip erstellen ?
    By I0N in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 09-01-09, 17:38
  2. Alfa-Feld ----> Numerisches Feld
    By dino in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 30-11-06, 15:23
  3. Grafik-Dateien erstellen
    By KM in forum NEWSboard Java
    Antworten: 3
    Letzter Beitrag: 08-06-06, 09:09
  4. ILE Feld in Feld ansprechen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 10-05-06, 16:26
  5. Alpha-Feld in numerisches Feld
    By Mark_S in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 20-08-04, 11:53

Berechtigungen

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