Anmelden

View Full Version : Denkfehler bei OPNQRYF?



Starocotes
19-03-12, 14:21
Hi

ich glaube ich habe einen Denkfehler bei einem OPNQRYF finde den einfach nicht. Hier die relevanten Zeilen aus dem RPG Programm:


fafkdn if e k disk usropn
// Geänderte Kunden suchen
cmdtxt = 'OPNQRYF FILE((STDPROD/AFKDN)) KEYFLD((KUKDN)) ' +
'QRYSLT(''KUDNEU *GE ''''' + %editc(pdat:'Z') +
''''' *OR KUDAEN *GE ''''' + %editc(pdat:'Z') + ''''''')';
dsply %subst(cmdtxt:1:52);
dsply %subst(cmdtxt:53:52);
dsply %subst(cmdtxt:105:52);
// Geänderte Kunden suchen
callp cmd(cmdtxt:512);
// Datei öffnen
open afkdn;
// Schleife zum Lesen der Datei
dou %eof(afkdn);
// Lesen des Satzes
read afkdnss;

Die DSPLY sind nur zum Debuggen.

Das Programm verarbeitet ALLE Sätze aus AFKDN. Wenn ich den mit DSPLY angezeigten OPNQRYF manuell ausführe und ein CRYFRMQRYF mache bekomme ich nur diejenigen die ich will.

Fuerchau
19-03-12, 14:58
Der Fehler liegt nicht im OPNQRYF.
Du benötigst noch einen OVRDBF mit SHARE(*YES) auf die OPNID , damit du auch auf die Queryfile zugreifst.

Warum machst du das nicht direkt mit SQL?
Ist doch viel einfacher und schneller!

Starocotes
19-03-12, 15:07
Danke!

Mit Embedded SQL habe ich noch nie gearbeitet und da war es einfacher das aus einem anderen Programm zu kopieren.

Fuerchau
19-03-12, 15:15
Denke beim OVRDBF noch an OPNSCOPE(*JOB), da dein RPG in einer anderen ACTGRP läuft als das QCMDEXC!

Zum Thema SQL:
Dann wirds aber höchste Zeit bevor du so mit dem alten Kram weitermachst.

Pikachu
20-03-12, 09:22
Zum Thema SQL:
Dann wirds aber höchste Zeit bevor du so mit dem alten Kram weitermachst.
Was ist eigentlich älter? OPNQRYF oder SQL? :confused:
Sind ja beide nicht mehr die jüngsten.

Fuerchau
20-03-12, 09:32
OPNQRYF ist wohl sicherlich älter, wird aber sicherlich nicht mit weiterer Funktionalität ausgestattet.

SQL wird ständig weiterentwickelt und bietet erheblich mehr Möglichkeiten als OPNQRYF, und das ohne obige Probleme (OVRDBF o.ä.).

Starocotes
20-03-12, 09:38
OPNQRYF ist wohl sicherlich älter, wird aber sicherlich nicht mit weiterer Funktionalität ausgestattet.

SQL wird ständig weiterentwickelt und bietet erheblich mehr Möglichkeiten als OPNQRYF, und das ohne obige Probleme (OVRDBF o.ä.).

Gabs OPNQRYF schon auf der /38? Die AS/400 gibts erst seit ca. 1986, SQL ist in der Theory aber schon älter.

Da ich jetzt noch ne 2. Datei mit JOIN einbinden muss werd ich mir embedded SQL doch mal anschauen, kann so schwer ja nicht sein.

bwachs
20-03-12, 14:17
Ja, OPNQRYF gab's schon auf der S/38.