PDA

View Full Version : Zugriff auf Inhalt von Feldname in DB



chera_span
29-04-04, 14:54
Hallo Forum,

ich habe folgendes problem. ich speichere mir in einer db dateinamen und feldnamen ab, um zu einem späteren zeitpunkt diese dateien mit "usropen" zu öffnen. jetzt möchte ich mit rpg von dem feldnamen der ja wiederum in einem feldnamen gespeichert ist den inhalt dieses feldnamens holen :-(

eval v_hf256 = %subst(xml202:1:v_p2) +
ijcxxt + %subst(xml202:v_p3)

im feld ijcxxt steht wiederum ein feldname von dem ich gerne den inhalt hätte.

vielleich kann mir irgendwer hierzu einen tipp geben wie man so etwas lösen kann (die feldnamen möchte ich nicht fix im pgm hinterlegen).

vielen dank im voraus.

chera

Fuerchau
29-04-04, 14:57
Dies geht nur mit dynamischem SQL !

RPG verwendet zur Laufzeit keine Namen mehr, deshalb kann das nicht funktionieren.

chera_span
29-04-04, 15:03
danke für die rasche antwort.

wie sieht es mit pointer aus, gibt es hier doch nicht irgendwie die möglichkeit um an diese werte heranzukommen. für eine lösung wäre ich sehr dankbar.

chera

Fuerchau
29-04-04, 15:52
Auch Pointer helfen hier nicht, da die Adresse eines Feldes angegeben werden muss, die zur Compile-Zeit bekannt ist !

Nochmal:

In RPG keine Chance.

Um variable Abfragen dieser Art zu gestalten nutze entweder SQL oder eine Select-Anweisung:

select;
when ijcxxt = 'F1';
eval Hilfsfeld = F1;
when ijcxxt = 'F2';
eval Hilfsfeld = F2;
:
:
endsl;

eval v_hf256 = %subst(xml202:1:v_p2) +
Hilfsfeld + %subst(xml202:v_p3)

PS:
Mit den Dateinamen wirst du das gleiche Problem haben, der USROPN heißt nicht, dass der Dateiname variabel ist !

BenderD
29-04-04, 16:07
Hallo chera,


danke für die rasche antwort.

wie sieht es mit pointer aus, gibt es hier doch nicht irgendwie die möglichkeit um an diese werte heranzukommen. für eine lösung wäre ich sehr dankbar.

chera

Hoffentlich nicht!!! wie soll sich sowas denn mit einer Datenbank vertragen, mit geprüften Feldtypen und Constraints und allem Trullala???

mfg

Dieter Bender

chera_span
29-04-04, 16:27
danke @fuerchau


zitat von @fuerchau
Mit den Dateinamen wirst du das gleiche Problem haben, der USROPN heißt nicht, dass der Dateiname variabel ist !<!-- / message -->
mit dem dateinamen eben nicht, da ich per ovrdbf mittels qcmdexec die datei öffne

Eval CmdLine = 'OVRDBF FILE(SYNONFL1) '
+ 'TOFILE(' + %trim(p_MsgLib) + '/'
+ %trim(IJCWXT) + ')'

da ich mit sql in rpg noch nie gearbeitet habe, wäre ich für ein kleines beispiel dankbar.

wenn ich nämlich versuche im editor die anweisung c/exec sql einzugeben, sagt mir der editior, dass er diese anweisung nicht kennt!

Nachricht . . . : Anweisung für das Umwandlungsprogramm nicht erkannt; die
Anweisung wird ignoriert.
Ursache . . . . : Die Anweisung für das Umwandlungsprogramm lautet nicht
/COPY, /TITLE, /EJECT oder /SPACE. Die Anweisung für das Umwandlungsprogramm
wird ignoriert.

chera

Fuerchau
29-04-04, 16:49
Jetzt eine Einführung in SQL zu geben ist etwas aufwändig. Beispiele gibts genügend im Forum !
Der Typ der Source muss in SQLRPGLE geändert werden.
"c/exec sql" funktioniert nicht im /free-Format.

Dein OVRDBF funktioniert in RPG nur, wenn die Definition der Dateien zur Laufzeit VOLLKOMMEN identisch sind zur angegebenen Datei zur Compiletime.

chera_span
29-04-04, 17:03
danke für die hilfreichen tips, werde mich mal mehr darüber informieren.

chera

AndreasH
30-04-04, 09:29
Noch als kleiner Hinweis nachgeschoben: Die Quelleart muss dann auf SQLRPG bzw SQLRPGLE geändert werden.
Gruß

Fuerchau
30-04-04, 09:49
@Andreas
Hast du meine Antwort von gestern nicht gelesen ? ;)