[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Bei uns (7.2) funktioniert das ganze ohne Probleme.
    Code:
    exec sql select sum(xx_brutto) into :summeDS.brutto from tabellexx;
    Ich bilde mir auch ein schon vor früher 6.1 und 7.1 solche Konstrukte schon mal verwendet zu haben.
    Ich meine DS oder Teile bzw. Felder einer DS im SQL zu verwenden.
    "Leider" kann ich das aber nicht mehr testen da bei uns alles schon auf 7.2 hochgezogen ist.
    Wenn das wirklich klappt, wäre das natürlich schön. Ich muss dass nochmal ausprobieren. Da wir Profound verwenden, können wir in Bildschirmdateien lange Feldnamen verwenden. Die werden intern in einer Datenstruktur im RPG-Programm verarbeitet. Wenn unser Recordformat im Bildschirm f1 heißt, greifen wir z.B. über "f1.bruttobetrag" auf das Bildschirmfeld zu. Das Feld in der Datenstruktur konnten wir (zumindest vor einiger Zeit) nicht direkt mit embedded SQL füllen. Vielleicht geht das ja jetzt. (Oder wir hatten damals ein anderes Problem).

    Dieter

  2. #2
    Registriert seit
    Oct 2015
    Beiträge
    109
    Bei uns mit 7.1 funktioniert das.
    Meine DS schaut so aus:
    dcl-ds ds_auftrag qualified inz;
    zon_fld1 zoned(9);
    zon_fld2 zoned(9);
    zon_fld3 zoned(2);
    zon_fld4 zoned(2);
    zon_fld5 zoned(1);
    zon_fld6 zoned(9);
    end-ds;

    Der SQL dazu:
    exec sql declare mein_cursor cursor for
    select * from meineview;
    exec sql open mein_cursor;
    exec sql fetch mein_cursor into :ds_auftrag;
    exec sql close mein_cursor;

    Ein Beispiel mit direktem select into habe ich leider gerade nicht,
    aber das sollte ja kein Problem darstellen.

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Das ist ja klar. Du füllst die ganze Struktur. Das geht natürlich. Die Frage ist, ob du auch ein einzelnes Unterfeld der Struktur füllen kannst.

    Also: exec sql fetch mein_cursor into :zon_fld2;


  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  5. #5
    Registriert seit
    Oct 2015
    Beiträge
    109
    achso
    habs ausprobiert, das funktioniert auch:

    dcl-ds ds_auftrag;
    firma zoned(2);
    sparte zoned(1);
    verkaufshaus zoned(2);
    auftrag zoned(4);
    end-ds;

    exec sql declare mein_cursor cursor for
    select firma from firmadatei where firma = 1;
    exec sql open mein_cursor;
    exec sql fetch mein_cursor into :ds_auftrag.firma;
    if sqlcode = 0;
    ds_auftrag = ds_auftrag;
    endif;
    exec sql close mein_cursor;

    Firma wird gefüllt, der Rest natürlich nicht.
    Funktioniert auch bei Verkaufshaus, liegt also nicht am ersten Feld.

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Laut IBM gibts dcl-ds in RPG aber erst ab 7.1 per PTFs ...

    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Und das funktionierte auch schon mit IBM i 5.4 so.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Also "dcl-ds" gabs doch erst mit V7? Gibt's da noch ein PTF für V5R4?
    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

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  10. #10
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also, ich habe mal alles nachgezogen, und folgendes hat bei mir ebenfalls funtioniert (V7R2) :

    Code:
     dcl-ds myDS;           
          FLD1 CHAR(14) ;    
          FLD2 CHAR(30) ;    
     end-ds;                   
    ...
    
    EXEC SQL select f1, f2 into :myDS from file ;
    Was nicht geht!



    Code:
     dcl-ds myDS;           
          extname(file)
     end-ds;                   
    ...
    
    EXEC SQL select * into :myDS from file ;
    Finde das reichlich seltsam...

  11. #11
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Passt denn deine SQL-Selektion genau zu myDS? Falls du join verwendest, hat dein select * eventuell mehr Felder als dein myDS.

    Falls das so ist, könntest du es mit select meineDatei.* into :myDS versuchen.

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von ExAzubi Beitrag anzeigen
    Was nicht geht!

    Code:
     dcl-ds myDS;           
          extname(file)
     end-ds;                   
    ...
    
    EXEC SQL select * into :myDS from file ;
    Finde das reichlich seltsam...
    Was steht denn im Spool?

Similar Threads

  1. Eine Marke, eine Halle, eine Messe: IT & Business - Ende September in Stuttgart
    By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 10-09-15, 12:50
  2. Total free RPG
    By philsturm in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-09-14, 09:09
  3. Wollte Gestern auf die schlechte Performance hinweisen
    By AS400.lehrling in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 1
    Letzter Beitrag: 13-11-13, 23:54
  4. Antworten: 0
    Letzter Beitrag: 06-06-02, 08:59
  5. schlechte Java-Performance
    By lrmeyer in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 05-03-02, 07:38

Tags for this Thread

Berechtigungen

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