Array kaskadiert sortieren [Erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Array kaskadiert sortieren [Erledigt]

Beitrag von Jan »

Hallo,

wenn ich ein zweidimensionales Array habe, und das nach zwei oder drei Spalten sortieren möchte - wie bekomme ich das hin? Ich war mir eigentlich sicher wie das funktioniert - der macht aber total komische Sachen.

Nehmen wir mal an, ich habe ein Feld Nachname (C25), ein Feld Datum (D8), und ein Feld Uhrzeit (C5). Jetzt möchte ich im einfachsten Fall alles nach Datum sortieren, und darin alle Einträge mit gleichem Datum nach Uhrzeit. Oder etwas aufwändiger alles nach Nachnamen, alle gleichen Nachnamen zusätzlich nach Datum, und alle gleichen Nachnamen mit gleichem Datum auch noch nach Uhrzeit.

Hat da jemand eine Idee? Die Frage ist rein rhetorisch gemeint! Dann natürlich haben die meisten hier dazu eine Idee.

Jan
Zuletzt geändert von Jan am Di, 11. Sep 2018 13:09, insgesamt 1-mal geändert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array kaskadiert sortieren

Beitrag von Tom »

Code: Alles auswählen

aSort(aData,,,{|aY1,aY2|DtoS(aY1[8])+Upper(aY1[25])+aY1[5] < DtoS(aY2[8])+Upper(aY2[25])+aY2[5]})
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Array kaskadiert sortieren

Beitrag von Jan »

Hallo Tom,

das war der erste Versuch, den ich gemacht hatte. Hat zwar irgend was sortiert, aber zwischendurch auch immer mal wieder Ausreißer gehabt. So ganz einwandfrei war das also leider nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array kaskadiert sortieren

Beitrag von Tom »

Hallo, Jan.

Ich benutze solche Ausdrücke in beliebig komplexen und sehr großen Arrays, ganz ohne Probleme. Ausreißer kann es m.E. nur durch unterschiedliche Längen geben (DtoS() ist zwar immer gleich, aber Upper() müsste man ggf. noch um ein Pad() ergänzen!) - oder durch Zeichensatzprobleme, was ich aber für unwahrscheinlich halte. Ansonsten arbeitet aSort() hier fehlerfrei und flink.
Herzlich,
Tom
Benutzeravatar
komnick
UDF-Programmierer
UDF-Programmierer
Beiträge: 75
Registriert: Mi, 04. Jun 2014 9:56
Wohnort: Berlin
Hat sich bedankt: 1 Mal
Danksagung erhalten: 5 Mal

Re: Array kaskadiert sortieren

Beitrag von komnick »

Hallo Jan,

sind die Namensfelder im Array vielleicht nur maximal 25 Stellen lang, können aber kürzer sein?
Dann ist vielleicht ein fehlendes PADR() das Problem:

ASORT(aData,,, {|aY1,aY2|;
PADR(UPPER(aY1[1]),25)+DTOS(aY1[2])+aY1[3] < ;
PADR(UPPER(aY2[1]),25)+DTOS(aY2[2])+aY2[3]})

Gruß
Martin

P.S. Tom war schneller...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Array kaskadiert sortieren

Beitrag von Jan »

Hallo Ihr beiden,

Ihr habt Recht. Das gehört jetzt in die Kategorie Anfängerfehler. Bei einem Index muß ich ja auch darauf achten das der Ausdruck immer gleich lang ist. Da pass ich ganz automatisch drauf auf - hier im ASort() hab ich das glatt verpennt.

Danke für den Wegweiser.

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