PDA

View Full Version : LF mit Join Bedienung



svit
07-09-16, 08:52
Hallo *all,
ich habe eine LF mit Join erstellt und beim Kompilieren bekomme ich einen Fehler
CPD7986 Schlüsselfeld nicht aus erster Datei im Schlüsselwort JFILE wie kann ich dies umgehen?
Beispiel:
A R LF_JoinR JFILE(PF1 PF2)
A J JOIN(1 2)
A JFLD(PF1_FLD1 PF2_FLD1)
A JFLD(PF1_FLD2 PF2_FLD2)
A JFLD(PF1_FLD3 PF2_FLD3)
A JFLD(PF1_FLD4 PF2_FLD4)
A PF1_FLD1 JREF(1)
A PF1_FLD7 JREF(1)
A PF2_FLD6 JREF(2)
A K PF1_FLD1
A K PF2_FLD7
A K PF1_FLD6

Fuerchau
07-09-16, 09:14
Das geht nur per DYNSLT.
Die Performance kann u.U. schlecht ausfallen, da hie die Daten tatsächlich dynamisch ausgewählt werden. Es müssen also Schlüssel auf den jeweiligen PF's passend vorhanden sein.

svit
07-09-16, 09:57
geht leider nicht.
immer noch der selben Fehler.

svit
07-09-16, 10:00
wenn ich das richtig verstehe:
Man darf das Feld aus der zweiten Datei nicht als Schlüsselfeld benutzen/definieren.

camouflage
07-09-16, 10:14
Das was Du haben willst, geht nur mit SQL oder Open Query.

svit
07-09-16, 10:29
Das ich das mit SQL lösen kann, weis ich auch.
Die Frage war: wie ich das über die LF lösen kann.
Ich habe keine zeit ein bestehendes Programm mit über 7.000 Code-Zeilen neue zu schreiben.

Pikachu
07-09-16, 11:01
So steht's in der Dokumentation (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/dbp/rbaforjlffjlf.htm) vom IBM:

Key fields, if specified, must come from the primary file. ...


wenn ich das richtig verstehe:
Man darf das Feld aus der zweiten Datei nicht als Schlüsselfeld benutzen/definieren.

hel400
07-09-16, 16:22
Genau so ist es.
Keyfelder nur aus der ersten Datei.
DYNSLT heißt nur, dass die SELECT/OMIT-Definitionen erst beim Zugriff berücksichtigt werden und das ist bei Selectfeldern aus Sekundärdateien daher erforderlich, hat aber nichts mit Keys zu tun.