[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2008
    Beiträge
    3

    Unhappy unerfahren mit free RPG

    Hallo,
    ich muss einen free RPG Code umschreiben bin aber sehr unerfahren was free angeht. Bin über jeden Tipp dankbar. Also ich möchte in dem folgenden Code nur die Sätze in die Tabelle VorST laden in denen der Inhalt des Feldes BVNR aus der RUNDEN2 und des Feldes Vorsch (Intern definiert) gleich sind. Die Inhalte sind Alphanumerisch (5A). Ich hab schon soviel hin und her Probiert ich glaub ich mache da irgendwas grundlegendes falsch.

    D Vorsch S 5A
    /Free
    Vorsch ='TESTT';

    VorST = 'Select ' +
    'KY, ARTN, VARTV, TLG, usw...

    'FROM ' + %TRIM(LibName) + '.' + %TRIM(Tablename) + ' ' +

    'Join BES.RUNDEN2 ON(ABARTV=ARTNRV AND ' +
    'ABARTN=ARTNR) ' +
    (((***und hier auch wenn BVNR = Vorsch ****))))
    'WHERE ' +
    'ABL <= ' + Min + ' AND TMP <>0 AND ' +
    'TMPB<>0 AND TMPL<>0 ) ' +
    'ORDER BY ARTN,VARTV';
    /EndFree

  2. #2
    Registriert seit
    Aug 2008
    Beiträge
    3
    Ich habe grade Festgestellt das das an nummerisch und nicht numerisch liegen muss.
    Wenn ich Vorsch mit 11111 fülle und BVNR entsprechend auch (das Feld bleibt dabei 5A) dann klappt das.

    D Vorsch S 5A
    /Free
    Vorsch ='11111';
    Select
    .
    .
    .
    'WHERE ' +
    'ABL <= ' + Min + ' AND TMP <>0 AND ' +
    'TMPB<>0 AND TMPL<>0 AND BVNR= ' + Vorsch + ' ' +
    'ORDER BY ARTN, VARTN';
    /End-Free
    Wenn ich aber Vorsch und BVNR mit AB111 fülle dann geht es nicht. Was ist den an der Syntac in der Where Clausel falsch???

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    das Ganze hat weniger mit Free-Format als mit der Aufbereitung des Strings zu tun.

    Den String, den Du aufbereitest willst Du sicher später als dynamisches SQL-Statement ausführen.
    Der fertige String muss sich eigentlich kopieren und z.B. mit STRSQL ausführen lassen.

    Soweit so gut! Das Problem sind wahrscheinlich die alphanumerischen Felder oder Datumsfelder. Die Feldinhalte dieser Felder müssen in Hochkomata angegeben werden. Wenn Du allerdings versuchst ein einzelnen Hochkomma in einen String zu setzten, wirst Du immer Probleme erhalten. In einem String muss anstelle eines einzenlen Hochkomma 2 Hochkomata (keine Gänsefüßchen) angegeben werden.

    PHP-Code:
    D HK             C                     Const('''')
     /
    Free
       String 
    'Select .... +
                   Where MyFld = ' 
    HK + %Trim(MyVar) + HK +
                       
    ' and MyNxtFld = ' + %Char(Num) ... 
    Am einfachsten ist, man definiert eine Konstante z.B. HK und verwendet diese immer dann wenn ein Hochkomma erforderlich ist.

    Bei numerischen Feld-Inhalten klappt bei Dir die Abfrage, da SQL seit V5R3 numerische Felder wenn erforderlich in ein Alpha-Format konvertiert. Enthält der String jedoch nicht nur numerische Zeichen, müssen die Hochkomata unbedingt gesetzt werden.

    In Deinem Fall stellt sich allerdings die Frage, ob dynamisches SQL tatsächlich notwendig ist.
    Wenn das SQL-Statement immer gleich bleibt und lediglich andere Werte (z.B. Kunden-Nr.) ausgewählt werden, ist statisches SQL mit Host-Variablen wesentlich eleganter.

    Birgitta
    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

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Alphanumerische Werte müssen in einfache Anführungszeichen gesetzt werden. Innerhalb deiner Zeichenketten mußt du so ein einfaches Anführungszeichen dann verdoppeln.

    ...
    'TMPB<>0 AND TMPL<>0 AND BVNR= ''' + Vorsch + ''' ' +
    ...

  5. #5
    Registriert seit
    Aug 2008
    Beiträge
    3
    Hallo,
    danke für schnelle Anwort. Es lag tatsächlich nur an den ollen Hochkomma. Oh man ich glaub ich muss dann mal nen Kurs belegen. DANKE

  6. #6
    Registriert seit
    Jul 2001
    Beiträge
    2.713
    Zitat Zitat von Diana Beitrag anzeigen
    Oh man ich glaub ich muss dann mal nen Kurs belegen. DANKE
    Nee, Du musst nur an den Fingern die Hochkommata abzählen.
    Und bei der Gelegenheit das Konglomerat bitte schön sauber
    formatieren, das ist unübersichtlich. Da ist es kein Wunder, dass Du daran verzweifelst.
    Auch wenn /free ja nicht schlecht ist, sollte man nicht gleich einen Wettbewerb im Codekomprimieren gewinnen

    -h

Similar Threads

  1. Datum-Konvertierung free rpg
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 14-03-08, 06:21
  2. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  3. Mehrere Bezugszahlen auf *off in Free RPG
    By mgraskamp in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 16-02-06, 16:01
  4. FREE RPG .. TESTN
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 25-01-05, 07:43
  5. Free Rpg Zeitdauer errechnen
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-07-04, 09:27

Berechtigungen

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