PDA

View Full Version : SETGT *HIVAL DATW111;



Seiten : [1] 2

DISCOME
15-10-10, 06:53
Hallo zusammen,

habe eine Tabelle die ausgewertet werden soll...
/free
SETGT *HIVAL DATW111;
READP DATW111;
.
.
.


das klappt soweit...

nun möchte ich aber den Satz auslesen mit den zweitgrößten SWert.

/free
SETGT (-1)*HIVAL DATW111;
READP DATW111;
.
.
.


Wie kann man das bewerkstelligen?

Ich hoffe mir ist zu helfen und ich bedanke mich für Eure Unterstützung.

ExAzubi
15-10-10, 07:09
Also so wie geplant haut das nicht hin, müsste meines Erachtens auch einen Compilerfehler geben.

*HIVAL SETGT DATW11

1 DO 2
READP DATW11
ENDDO

IOch würde so machen, einfach ind jder kanns lesen :)

DISCOME
15-10-10, 07:24
Ach ja,

da war noch was.

Das alles soll in einer Abfrage passieren...

Also erst

/free
SETGT *HIVAL DATW111;
READP DATW111;

.
.
.
***und dann den zweitgrößten Satz***


SETGT(-1) *HIVAL CSTP111;
READP CSTP111;

.
.
.

EXFMT MAIN;
*inlr = *on;
if Not %EOF(CSTP111);
ENDIF;
/end-free


mhh und nun? :confused: ´

woki
15-10-10, 07:46
um an den zweitgroßten Satz zu kommen, muss Du nur ein Mal Positionieren und dann zwei Mal mit readP lesen, also:



/free
setGT *hival DATW111; // positionieren am Ende der Datei
readP DATW111; // lese letzten Satz
readP DATW111; // lese vorletzten Satz
/end-freeoder was meinst Du?

DISCOME
15-10-10, 08:02
Genau das hatte ich gewünscht...

ist ja doch so einfach wie man es immer sagt..

Ich danke für Eure Unterstützung!!

DISCOME
15-10-10, 08:31
Eine andere Frage.

Durch das Drücken der F8 Taste sollen erst die Felder XYZ angezeigt werden.

Das geht doch mit den Bezugszahlen. Im DSPF / MAIN habe ich diese CF angegeben und dem Feld XYZ ebenso. Jetzt muss ich doch noch den Schalter auf *ON setzen.. wenn ich F8 drücke.

Fragen über Fragen...

woki
15-10-10, 08:53
Zum Verbergen oder Anzeigen bestimmter Felder in einer Displayfile kannst du mit DSPATR(ND) arbeiten.

hier ein bißchen Codegeschnipsel:


DSPF:
A CF08(08 'Show Fields')
A R RECORD
A FLD1 10 B 11 2
A 50 DSPATR(ND)

PGM:
/free
if *in08; // F8 gedrückt
*in50 = *off; // Feld FLD1 anzeigen
else;
*in50 = *on; // Feld FLD1 verbergen
endif;
/end-free

Pikachu
15-10-10, 09:14
Muß das nicht *in08 und *in50 heißen?

woki
15-10-10, 09:15
huch, stimmt genau ... ;)
hab´s geändert.

DISCOME
15-10-10, 10:38
Das mit dem Sternchen habe ich mitbekommen...

aber wo setze ich den Code hin...

das PGM fliegt nach dem Drücken von F8 raus...


/free

SETGT *HIVAL CSTP111;
READP CSTP111;
D_ORDERSALL = F_ORDERSALL;
D_ORDERS2DAY = F_ORDERS2DAY;
.
.
.
.

READP CSTP111;
D_ORDERSALLV = F_ORDERSALL;
D_ORDERS2DAV = F_ORDERS2DAY;
.
.
.
.
EXFMT MAIN;
*inlr = *on;
// F8 Funktion
if *in08; // F8 gedrückt
*in50 = *off; // Feld MONSCHICHV anzeigen
else;
*in50 = *on; // Feld MONSCHICHV verbergen
endif;

if Not %EOF(CSTP111);
ENDIF;

/end-free

Ist dann doch nicht so leicht wie ich erst dachte.

Aber aller Anfang ist schwer.