-
ILE RPG / SQL Füllen einer Feldgruppe
Hallo!
Gibt es eine Möglichkeit in ILE RPG eine Feldgruppe direkt aus SQL zu füllen?
Es handelt sich bei dem gewünschten Resultset um ein einzelnes Feld.
Dachte da an sowas wie Fetch Cursor into Feldgruppe:Index...
Gruß Holger
-
Mit diesem kleinen Trick erreicht Du das Gewünschte.
PHP-Code:
dTEXTDS DS
d TEXT_File 800A
d TEXT_Array 80A Dim(10) Overlay(TEXTDS)
Beim Fetch gibst Du das Feld TEXT_File an. Anschließend kannst Du über das Feld TEXT_Array auf die einzelnen Elemente zugreifen.
Frank Hildebrandt
-
Danke für die schnelle Antwort.
Da hab ich mich wohl falsch ausgedrückt. Mit einem Feld meinte ich, dass ich im Select nur ein Feld habe und somit keine Unterfelder definieren muss.
d FG_AUFTRAG S 6 0 DIM(100)
d IDX S 3 0
select aunr from Datei where ...
Alle Auftragsnummern die mir dieser Select zurückgibt sollen in der Feldgruppe FG_AUFTRAG abgelegt werden. Der Index der Feldgruppe ist IDX. Dachte mir, dass ich einen Cursor benötige und diesen dann über einen Fetch in die Feldgruppe schieben kann.
Ist das überhaupt möglich?
Gruß Holger
-
Hallo
es ist nicht möglich eine Feldgruppe oder einzelne Feldgruppen-Elemente mit embedded SQL direkt anzusprechen.
Ab Release V5R3M0 ist es jedoch möglich Array-Datenstrukturen zu verwenden und diese direkt zu füllen. Vielleicht hilft Dir das ja weiter:
PHP-Code:
D DSArray DS dim(100)
D MyFld 10A
D Elements S 5I 0 inz(%Elem(dSArray))
D AnzRows S 5I 0
*-------------------------------------------------
C/EXEC SQL
C+ Declare MyCsr Cursor for
C+ Select FieldA From MyTable where ...
C/End-Exec
C/EXEC SQL Open MyCsr
C/END-EXEC
C/EXEC SQL
C+ Fetch next from MyCsr
C+ for :Elements rows into :dSArray
C/END-EXEC
C Eval AnzRows = SQLER3
C/EXEC SQL Close MyCsr
C/END-EXEC
/Free
For Index = 1 to AnzRows;
Dsply DSArray(Index).MyFld;
EndFor;
*InLR = *On;
/End-Free
Birgitta
-
Hallo Forum!
Da ich mittlerweile über V5R3 verfüge, konnte ich den Vorschlag von Birgitta testen und er hat funktioniert.
Nur stellt sich mir jetzt ein Problem wenn ich die DS im Programmverlauf anders sortieren will, da es sich bei der DS nicht um ein Array handelt.
Normalerweise habe ich ein Array mit einer DS wie folgt definiert:
PHP-Code:
D DS D DS_DATEN ascend dim(99) D DA_FARBE 10 OVERLAY(DS_DATEN:1) D DA_TYP 1 OVERLAY(DS_DATEN:*NEXT) D DA_MENGE 11 2 OVERLAY(DS_DATEN:*NEXT)
Hier kann ich dann nach den Unterfeldern sortieren.
Da mein SQL sehr umfangreich ist, soll nicht für jede neue Sortierung das SQL neu ausgeführt werden.
Wie kann ich mein Dilemma lösen? Hat jemand einen Vorschlag?
Gruß Homue
-
D DSArray DS dim(100)
D MyFld 10A
d MyPtr s * inz(DSArray(1))
D DS based(MyPtr)
D DS_DATEN ascend dim(99)
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Squall in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 10-10-06, 08:53
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By Zupfl50 in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 06-10-04, 21:04
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks