Scatter und Gather neue Befehle

Hier können die Unterschiede, Fehler und Probleme zwischen den Versionen bzw. bei der Migration besprochen werden

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14547
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Scatter und Gather neue Befehle

Beitrag von brandelh » Do, 21. Jun 2018 9:32

ich musste von mehreren DBFs nach Kriterien eine gemeinsame zusammensetzen, das wollte ich mit den netten internen Funktionen Scatter und Gather machen.

Code: Alles auswählen

                   xDaten := QUELLE->(scatter())
                   ZIEL->(gather(xDaten))
ein Abbruch zeigte mir, dass die Dateien nicht wie angenommen die gleiche Feldstruktur hatten, in den Jahren wurden einige Felder hinzugefügt.
Gather() kommt damit nicht zurecht. Kein Wunder da die Felder ja per fieldget() fieldput() bearbeitet werden.

Bei der 2.0 wird hier mit DataObjekts gearbeitet und es gibt 2 Befehle dafür - sogar in der Hilfe:

Code: Alles auswählen

                   SELECT QUELLE
                   SCATTER NAME oData
                   SELECT ZIEL
                   GATHER  NAME oData
                   SELECT QUELLE
das funktionierte gut, aber ich kann diese BEFEHLE einfach nicht mehr leiden und das SELECT dazwischen nervt mich (optisch) ... so wird das in einer PPO umgesetzt:

Code: Alles auswählen

                   dbSelectArea( "QUELLE" )
                   _scatterObject( @oData )
                   dbSelectArea( "ZIEL" )
                   _gatherObject( oData )
                   dbSelectArea( "QUELLE" )
*/

und nun kann ich einfach die Funktionen auf die richtige Datei anwenden ... warum man nicht gleich die Funktionen in der Hilfe aufführt sondern interne benutzt bleibt mir ein Rätsel:

Code: Alles auswählen

                   QUELLE->(_scatterObject( @oData ))
                   ZIEL->(_gatherObject( oData ))
durch die Verwendung der Namen kommt es hier auch bei unterschiedlicher Reihenfolge der Felder zu keinem Problem.
Gruß
Hubert

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7284
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Scatter und Gather neue Befehle

Beitrag von Tom » Do, 21. Jun 2018 9:36

warum man nicht gleich die Funktionen in der Hilfe aufführt sondern interne benutzt bleibt mir ein Rätsel:
Das macht man, damit man die Funktionen ändern kann - z.B. im Hinblick auf die Parametrisierung -, ohne die Befehle ändern zu müssen, weil man das ja über den Präprozessor abfangen kann. Ich bin da mal mit RESTORE FROM vs. _SymLoad() (das ist die Funktion dazu) auf die Fresse gefallen, vor einigen Jahren.
Herzlich,
Tom

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14547
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Scatter und Gather neue Befehle

Beitrag von brandelh » Do, 21. Jun 2018 9:40

OK ich formuliere besser ... ich wundere mich, dass man neben den Befehlen SCATTER NAME ... GATHER NAME nicht auch noch offizielle Funktionen ScatterName() GatherName() bzw. ScatterObject() GatherObject() angeboten hat. ;-)
Gruß
Hubert

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13072
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Scatter und Gather neue Befehle

Beitrag von Jan » Do, 21. Jun 2018 10:10

Hubert,

seit es die offiziell gibt benutze ich auch SCATTER und GATHER ganz gerne - das ist einfach und universell anwendbar mit dem dahinter stehenden DataObject. Und habe mich auch geärgert, das die nicht per cAlias-> ansprechbar sind. Das habe ich mir bei allen Db...-Funktionen angewöhnt, und das ist einfach nur super. Hier fehlt mir das aber wirklich.

Ich behelfe mir damit, das ich nach dem SCATTER noch zwei MemVars anlege mit dem Alias und dem Recno des gerade ausgelesenen Satzes. Dann kann ich vor dem GATHER genau wieder darauf springen, habe die notwendigen Daten ja im DO immer mit dabei.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Antworten