PDA

View Full Version : Sortieren von Subfiles



mahones
14-02-06, 16:03
Hallo Forum,

gibt es die Möglichkeit, eine mit RPG/400 programmierte Subfile (mit SDA) über die Spaltenköpfe sortieren zu lassen?

Ich habe mal irgendwo etwas gelesen, dass es mit Datenwarteschlangen oder so funktionieren soll. Aber a) fand ich da nichts näheres zu und b) konnte mir keiner ein Beispiel nennen/geben.

Wenn also jemand eine Lösung weiß, die nicht mit Workdateien, Feldgruppen o.ä. zu tun hat...BITTE MELDET EUCH :)

DANKE

RobertMack
14-02-06, 18:20
Hallo,

das geht so:

1) über jede Spalte ein Eingabefeld
2) nach jedem EXFMT Eingaben prüfen und Bezugszahl setzen
3) Je Spalte/Bezugszahl muß es eine eigene LF geben
4) die Leseschleife zum Füllen der Subfile sieht dann so aus:

90 READ LFILE01
91 READ LFILE02
92 READ LFILE03
...

Solange unter 2) kein neuer "Schalter" kommt, bleibt die zuletzt gewählte Sortierung erhalten (blättern!)

Viel Spaß, ist 'ne gute Übung!

loeweadolf
14-02-06, 23:11
oder benutze VA-RPG


mfg. Ludger

mahones
15-02-06, 08:17
@RobertMack: Danke, das ist eine Lösung, die wir ähnlich praktizieren.
Allerdings verwenden wir Funktionstasten statt Eingabefelder (spart auch Platz).
Aber dazu muss eben jedes Mal die Datei neu gelesen werden. Und genau dieses wollen wir NICHT - denn es handelt sich z.T. um sehr große Dateien, deren Lesevorgang schon an die "Geduldsgrenze" des Benutzers geht...
Ich dachte eher daran, dass die Subfile, die ja irgendwie intern gespeichert sein muss, anhand der Spaltenköpfe neu sortiert werden kann, ohne sie neu aufzubauen (wie z.B. in Excel).

@loeweadolf: ...RPG/400 - nix anderes !

RobertMack
15-02-06, 08:30
Nun, dazu fällt mir spontan ein:

Performance - Subfile dynamisch oder werden erst mal 999* Sätze gelesen?

Funktionstaste - wie wäre es mit mehreren Subfiles (je ein SFLFMT/CTL) die parallel gefüllt werden, man braucht dann nur noch umzuschalten

Subfile - evtl. verzichten und Zeilen mit SLN selbst ausgeben (jeweils nur eine Seite) - das ist schneller programmiert, meist performanter und schneller aktualisiert (nach Satzauswahl + Änderung)

mahones
15-02-06, 08:40
Wie sollen denn mehrere Subfiles gleichzeitig geüllt werden, wenn ich nur eine Datei lese?
Dann müssten doch auch mehrere Dateien gelesen werden - also ist der zeitliche Aufwand der gleiche - er ist nur am Anfang statt bei der Anforderung (Vorteil: einmalig ... Nachteil: wenn nicht benötigt, umsonst)!?

Fuerchau
15-02-06, 09:57
Wenn mehrere Sortierfolgen nötig sind, ist dies nur über entsprechende LF's lösbar. Eine Sortierung einer Subfile ist definitiv nicht möglich !
Du solltest also obige Lösungsansätze verfolgen und die Subfile immer nur mit 1 Seite füllen. Beim Vorwärtsblättern füllst du dann die nächste Seite, das Rückwärtsblättern erfolgt automatisch.
Je nach gewünschter Sortierung muss eine entsprechende LF verwendet werden.

Die Sortierung einer Subfile ist nur per Hilfstabelle (Datei) möglich in die man die Daten der Subfile ausliest, sortiert und wieder zurückschreibt. Die Performance kannst da dann allerdings komplett vergessen.

Der Vorteil der Subfile ist ja gerade das Füllen nur bis zur 1. Anzeige um dann je nach Bedarf zu ergänzen.

jo400
01-03-06, 15:11
Hallo mahones,

je nachdem wie viele Datensätze verarbeitet werden müssen, könnte man die Daten auch zunächst in eine Datenstruktur (mit DIM(xxx)) schreiben, dann die Daten in der Datenstruktur sortieren und die Subfile aus der Datenstruktur füllen.
Wenn die Sortierreihenfolge geändert werden soll, dann muss man nur noch die Datenstruktur neu sortieren und die Subfile aus der DS neu füllen.

Viel Erfolg

Jo