Seite 1 von 1

Array und Filter

Verfasst: Mo, 14. Nov 2016 10:50
von Manfred
hm, gerade stoße ich auf ein Problem. Eine DBF kann man ja mit Scope und Filter eingrenzen. Wie macht man das mit einem Array?

Re: Array und Filter

Verfasst: Mo, 14. Nov 2016 11:06
von Jan
Hallo Manfred,

ohne jetzt die Möglichkeiten des Browses in Express++ zu kennen: Lies einfach nur die Teilmenge der Sätze in das Array ein, die dem Scope-Inhalt entspricht. Das geht auf dem Scope ja supoer schnell. und dann kannst Du das Array ja jederzeit per ASort() umsortieren. Mit einem :refreshAlle() hast Du das dann im Browse auch direkt korret stehen.

Wobei ich mir gerade die Frage stellt, ob man das auch mit DataObjects machen könnte ... Jeder Datensatz ist ein Array-Satz, die Felder sind Methoden im DataObject. Soweit arbeite ich da ja auch schon mit. Ob man die DataObject-Methode im Browse-Datalink angeben kann? Das wäre mal spannend auszutesten ...

Jan

Re: Array und Filter

Verfasst: Mo, 14. Nov 2016 11:38
von Rudolf
Hallo,
DC_SOPEARRAY(aRec) dürfte das sein was Du suchst, Du kannst ein mehrdimensionales Array verwenden, nur das erste Element muss die Record Nummer sein. die anderen kannst Du zum Sortieren nehmen. Geht sehr schnell auch bei größeren Datenmengen.
Grüße
Rudolf

Re: Array und Filter

Verfasst: Mo, 14. Nov 2016 12:20
von Jan
Ein Scope auf die Daten im Browser dürfte hier eher falsch sein. Die Vorgehensweise bei Manfred ist: Es werden nur Sätze mit einer bestimmten Bedingung angezeigt (das Datum muß das gewählte sein). Das ginge ja noch mit einem Scope auf diese Spalte. Aber man muß dann die gefilterten Sätze noch nach verschiedenen Spalten sortieren können.

Und das geht ja mit einem Scope nicht mehr. Sobald ich den Index wechsle, ist der Scope nicht mehr aktiv. Xbase++ merkt sich zwar, wie der Scope auf einen Index lautet, wenn auf einen anderen gewechselt wird. Wechselt man also wieder auf den Scope-Index zurück, ist auch der Scope wieder da. Aber der Scope wirkt nicht, wenn der betreffende index nicht der aktive ist.

Jan

Re: Array und Filter

Verfasst: Mo, 14. Nov 2016 12:26
von Rudolf
Hallo,
genau das macht dc_setscopearray(), und man kann mehrere Arrays gleichzeitig aufbauen und dann sehr schnell welchseln. Also zuerst über den Index z.B. auf Datum alle Records die entsprechen mit Sortierkriterien als zusätzliche Elemente ins Array, geht sehr schnell. Dann dc_setscoparray() und man hat nur die gewünschte Teilmenge. Beim wechseln der Reichenfolge einfach das Array umsortieren. Kann mir nicht vorstellen dass es schneller oder komfortabler gehen könnte.
Grüße
Rudol

Re: Array und Filter

Verfasst: Mo, 14. Nov 2016 12:32
von Manfred
Hallo Rudolf,
Danke für den Hinweis. Das werde ich mir mal in den nächsten Tagen anschauen, ob es für mich in Frage kommt.