-
Der READC liefert dir doch die SFLRCD (F-Bestimmung).
Diese Satznummer musst du in das SFLCTL-Feld übertragen dessen Markierung SFLRCDNBR enthält.
-
klappt soweit jetzt und er positioniert nach verlassen des 2. PGMs auch wieder richtig... jedoch kommt er dann beim Blättern durcheinander... Er fängt beim Subfileende immer wieder wenn die PAGEDOWN taste gedrückt wird von vorne an und zeigt mir die erste Seite... Ist wie ne Endlosschleife... obwohl bei der letzten Ende und nicht weitere dortsteht.
-
Auch hier übernimmt scheinbar das Programm selber die Steuerung ?
Reagierst du im Programm auf die Blättertasten ?
Es kann ja sein, dass das Blättern so gewünscht wurde.
-
das Programm hat selbst die Steuerung...
das Problem ist dass ich ja jeweils 4 Sätze pro Seite auf einer Seite habe und beim Blättern werden ja immer 4 auf die SNR draufaddiert... wenn dann der Benutzer einen Satz mit X auswählt und ich einen READC macht habe ich z.B. 7 in der SNR... wenn ich dann vom 2. Programm zurückkomme hat er ja immer noch 7 und addiert wieder 4 drauf. wenn die SFL aber insgesamt z.B. 46 Sätze hat findet er dann anscheinend kein Ende... wenn ich anstatt dessen wenn ich aus dem 2. Programm zurückkomme gleich 46 in SNR übertrage (zuvor gesichert) dann steht er am Ende der Subfile (wird vom Benutzer jedoch nicht gewünscht...
solange der Benutzer vor Aufruf des 2. PGMs nicht zu SFL-Ende geblättert hat läuft alles wunderbar.
-
Die Anzahl der Sätze, die du füllst, ist dir ja bekannt.
Da du beim READC die letzte bearbeitete SNR merken kannst, kannst du das blättern darüber steuern.
Gibt ein READC direkt EOF, machst du eben auch nichts.
Die Grenzen (> Ende und < 1) musst du natürlich abfragen und entsprechend reagieren.
Du kannst es dir aber auch ganz einfach machen, in dem du den PAGE-/ROLL-Tasten keine Bezugszahl zuordnest, dann blättert das System für dich automatisch und gibt auch entsprechende Fehlermeldungen aus.
Nur die SNR des READC ist dann für die Positionierung erforderlich.
-
PAGEDOWN(99 'BILD AB')
oder
89 PAGEDOWN(99 'BILD AB') ???
wenn ich pagedown komplett weglasse kann ich überhaupt nicht blättern.
Ist ein ziemlich altes Programm... wenn die PAGEDOWN taste gedrückt wird geht er zum lesen zurück.
Es ist immer ein Do 4 drin.
Muss das eigentlich gemacht werden?
Reicht es nicht wenn SFLSIZ = SFLPAG?
im moment ist SFLSIZ > SFLPAG
-
Einfach nur PAGEUP und PAGEDOWN ohne weitere Angaben (Text erfordert Bezugszahl).
Wenn SFLSIZ = SFLPAG, dann musst du selber blättern, wenn SFLSIZ > SFLPAG kann das System dies übernehmen.
Wofür ein "do 4" ???
-
meine Kollegen und Vorgänger haben so immer Programmiert mit z.B. "Do 4".
Versteh auch nicht warum. Hier wurden immer 4 Sätze eingelesen, dann die SFL angezeigt und bei PAGEDOWN bzw. ROLLUP wieder 4 eingelesen und angezeigt. usw.
Habe die Sache jetzt so geregelt dass ich die Subfile erst komplett fülle und dann anzeige ohne ROLLUP.
Funktionert soweit.
Wie muss ich das dann machen wenn ich immer nur die Sätze pro Seite einlesen will?
also 1. SFLSIZ und SFLPAG müssen identisch sein?
und 2. es muss PAGEDOWN in der DDS mit Bezugszahl angegeben werden?
lese ich dann auch mit DoU %eof und liest er dann auch nur 4 Sätze ein?
-
Da gibt es unterschiedliche Wege.
Sicherlich kann man dies "performant" gestalten, dass man nur soviele Daten liest, wie gerade vorwärts geblättert wird.
Blättert der Anwender nicht, brauchen auch die Daten nicht gelesen werden.
Hierfür benötigt man natürlich eine BZ für PAGEDOWN, PAGEUP läuft automatisch.
Ich mache dies dann so:
99 PAGEDOWN(99)
N99 SFLEND
Solange noch Daten vorhanden sind, setze ich BZ99=*ON.
Bin ich am Ende, setze ich BZ99=*OFF.
Dadurch weiß die SFL, dass dahinter nichts mehr kommt und meldet dem Programm auch die PAGEDOWN nicht mehr. Das Blättern in beide Richtungen funktioniert natürlich weiterhin.
Die Frage ist immer, ob sich das in der Performance tatsächlich auswirkt.
Erwarte ich weniger als z.B. 500 Sätze, und die Zugriffe sind sowieso schnell, kann ich die SFL sofort komplett füllen.
Kann der Bediener aber über ggf. mehrere 1000 Sätze (max. 9999) blättern, ist natürlich die Frage ob man Daten, die man sich nicht ansieht, überhaupt zur Verfügung stellen soll.
-
Vielen Dank... hat mir sehr geholfen!
-
 Zitat von Fuerchau
Da gibt es unterschiedliche Wege.
Sicherlich kann man dies "performant" gestalten, dass man nur soviele Daten liest, wie gerade vorwärts geblättert wird.
Blättert der Anwender nicht, brauchen auch die Daten nicht gelesen werden.
Hierfür benötigt man natürlich eine BZ für PAGEDOWN, PAGEUP läuft automatisch.
Ich mache dies dann so:
99 PAGEDOWN(99)
N99 SFLEND
Solange noch Daten vorhanden sind, setze ich BZ99=*ON.
Bin ich am Ende, setze ich BZ99=*OFF.
Dadurch weiß die SFL, dass dahinter nichts mehr kommt und meldet dem Programm auch die PAGEDOWN nicht mehr. Das Blättern in beide Richtungen funktioniert natürlich weiterhin.
Die Frage ist immer, ob sich das in der Performance tatsächlich auswirkt.
Erwarte ich weniger als z.B. 500 Sätze, und die Zugriffe sind sowieso schnell, kann ich die SFL sofort komplett füllen.
Kann der Bediener aber über ggf. mehrere 1000 Sätze (max. 9999) blättern, ist natürlich die Frage ob man Daten, die man sich nicht ansieht, überhaupt zur Verfügung stellen soll.
Hätte hierzu mal noch ne Frage:
Beim Füllen der Subfile darf ich dann ja nur soviel Sätze einlesen wie SFLPAG groß ist oder?
-Mache ich das dann mit Do (z.B. SFLPAG) oder wie macht ihr das?
-Habe gesehen dass manche für SFLSIZ 9999 angeben und nicht SFLPAG + 1.
Wozu ist das gut? Ist ja praktisch das gleiche oder?
-
Im Prinzip Ja, aber ...
SFLSIZ wird verwendet, wenn man per SFLINZ (mit Bezugszahl) leere Sätze initialisieren möchte.
Ansonsten gilt nur:
SFLSIZ > SFLPAG -> Scrollable
Um das Blättern dann effektiv zu gestalten, sollte man für PAGDOWN/ROLLUP und SFLEND eine BZ definieren.
Solange SFLEND aus ist, meldet das System den Blätterwunsch, wenn über das aktuelle Ende weitergeblättert werden soll.
Ist SFLEND an, blättert das System nun automatisch.
Man muss sich nur merken, wann man SFLEND an macht.
Ist SFLPAG überschritten und noch nicht EOF, einen Satz vorwärts lesen, die BZ des SFLEND mit Status des EOF setzen und einen Satz wieder rückwärts lesen.
Dann kann es nicht passieren, dass der User eine weitere Seite anfordert, obwohl die letzte Seite genau passend gefüllt wurde.
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 01-09-10, 15:21
-
By Anette in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 24-07-06, 20:52
-
By borwegen in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 30-06-06, 09:04
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-05-06, 13:56
-
By Toschie in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 08-06-05, 14:21
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