Array spezialsortiert

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 11:47

eine bessere Überschrift fiel mir nicht ein, aber ich habe folgende Idee:
Ich habe einen Browse, in dem ich Vereine anzeige. Das können männlich, weibliche, oder gemischte sein. (zu erkennen in einem Feld, in dem "m", "w" oder "g" steht.
In einem anderen Browse habe ich ein Array, mit der Auswahl an Teilnehmern. Dort ist auch angegeben, ob "m" oder "w". Die GEschlechter sind farblich unterlegt und nach Geschlecht ("m" "w")sortiert, aber innerhalb des Geschlechts nach Namen als 2. Schlüssel. Jetzt habe ich das Problem, dass viel gescrollt werden muß, weil entweder ein männlicher, oder ein weiblicher, oder ein gemischter Verein bestückt werden muß, die Teilnehmerauswahl aber doch recht groß ist. Meine Idee war nun jedesmal den Verein vorher abzufragen, ob er "m", "w", oder gemischt ist. Dementsprechend soll das Teilnehmerarray dann jeweils passend vorsortiert werden. Also wenn der Verein nur "m" haben kann, dann sollen die "m" sortiert nach Namen zuerst im Auswahlbrowse erscheinen, wenn sie "w" sind die "w" sortiert nach Namen usw. Wie kann ich das mit dem Array so bauen? Mir fällt im Moment nicht ein, wie man sowas sortiert.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 11:55

Manfred,

ich bin ja vielleicht noch etwas benebelt hier, überseh daher irgendwas in Deinen Ausführungen. Aber wo genau ist denn da das Problem? Du kannst Doch ein Array sortieren wie Du Lust und gute Laune hast. Einfach die Bedingungen in den Codeblock reinschreiben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 11:57

:?: Bahnhof.
Tu mir mal bitte einen Gefallen - gib mal ein paar Beispieldaten an und danach, in welcher Reihenfolge Du das sortiert haben möchtest.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 11:58

richtig, aber wie lautet die? Jetzt sage ich dem Array Sort auf Spalte Geschlecht und innerhalb Geschlecht nach Namen. Das bedeutet aber es ist immer die Reihenfolge "g", "m", "w". Ich möchte aber mal "m" und mal "w" oben stehen haben.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 12:02

Manfred,

dann kopier das Array doch um. Erst die mit dem passenden Geschlecht rüberschreiben, danach die anderen passend sortiert. Und wieder in das ursprüngliche Array zurückkopieren. Natürlich erst, nachdem das geleert worden ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 12:03

ok, das wäre ein Weg. Ich dachte nur es gäbe da noch etwas anderes über Asort, oder so.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 12:04

Manfred,

vermutlich ginge das auch. Aber dann mußt Du Dir eine eigene Collation schreiben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 12:05

Manfred,
gibt es auch - aber solange Du meiner Bitte nicht nachkommst...
Tipp: Du kannst im Codeblock auch mit iif() entsprechend schachteln...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 12:05

für ein Array? Hm, noch nie was von gehört. Dachte das wäre nur für DBF Treiber möglich.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 12:10

Wie Deiner Bitte nicht nachkommen? MArtin ich verstehe Dich nicht.
Ich habe

Verein1 g
Verein2 g
Verein3 g

Verein1 m
Verein2 m
Verein3 m

Verein1 w
Verein2 w
Verein3 w

die sollen so sortiert werden, das mal "m", mal "w" und mal "g" oben steht. So wie es der andere Browse vorgibt.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 12:14

Manfred,

lt. Hlfefunktion geht das auch mit ASort. Was ja auch logisch ist - wenn ich etwas sortieren möchte, soll das ja nicht auf Araay und dbf unterschiedliche Bedingungen haben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 12:16

Schau Dir mal SetCollationTable() an.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 12:22

Manfred,
jetzt fehlt nur noch die gewünschte Reihenfolge - willst Du das so haben:
Verein1 m
Verein1 w
Verein1 g

Verein2 m
Verein2 w
Verein2 g

Verein3 m
Verein3 w
Verein3 g

Oder wie?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Jan » Do, 01. Dez 2016 12:25

Martin,

falsch. Die Blöcke, die Manfred aufgelistet hat, müssen blockweise umsortiert werden. Also mal die mit dem "m" oben, mal die mit dem "w".

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11755
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 12:32

Ich verstehe das noch immer nicht!
Macht doch mal bitte ein Beispiel von der gewünschten Sortierung - anhand der neun Beispielzeilen von Manfred!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 12:34

Ah - oder war Manfreds Beispiel oben schon das fertig sortierte?
Also erst nach dem Geschlecht (in nicht-alphabetischer Reihenfolge) und danach nach dem Verein (in alphabetischer Reihenfolge)?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 12:42

Wenn dem so ist:
Code: Alles auswählen
aGeschlecht := { "m", "w", "g" }   // Geschlecht in der gewünschten Sortierreihenfolge
aSort( aArray,,, {|aX,aY| iif( aX[ 2 ] <> aY[ 2 ], aScan( aGeschlecht, aX[ 2 ] ) < aScan( aGeschlecht, aY[ 2 ] ), aX[ 1 ] < aY[ 1 ] ) } )


Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 13:17

verflixt, das mit dem Set Collation habe ich die ganzen jahre überlesen. Oder ignoriert, oder nicht verstanden. Sucht euch was aus. :angry4:
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 14:00

Und wie erreichst Du, dass die geänderte Collation beim Sortieren nur auf die zweite Spalte wirkt - nicht aber auf die erste?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 14:10

wenn die Frage an mich ging-> :-k :dontknow:
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon Martin Altmann » Do, 01. Dez 2016 14:19

Ja - an Dich und Jan.
Aber Du wirst es ja bereits wissen, oder? Ich hatte Dich so verstanden, dass Du das mit der geänderten Collation bereits probiert hast.
Problem dabei:
Normale Reihenfolge: g -> m -> w
Damit wäre also bei den Vereinsnamen die Reihenfolge in dem Fall wie folgt:
  • Agentur
  • Amperien
  • Award
Wenn Du die Collation dahingehend änderst, dass die Reihenfolge der drei o.g. Buchstaben sich ändert in m -> w -> g, müsste das auch Auswirkungen auf die eigentlich alphabetisch aufsteigend gewünschte Sortierung der Vereinsnamen haben - die Reihenfolge dieser drei Namen müsste dann wie folgt aussehen:
  • Amperien
  • Award
  • Agentur
Aber ich lasse mich gerne eines Besseren belehren 8)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12946
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon Manfred » Do, 01. Dez 2016 14:30

nönö, meine Aussgae ging nur in die Richtung zu erklären, das ich es mal wieder überlesen habe.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16224
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: Array spezialsortiert

Beitragvon UliTs » Sa, 03. Dez 2016 23:44

Manfred hat geschrieben:...
Meine Idee war nun jedesmal den Verein vorher abzufragen, ob er "m", "w", oder gemischt ist. Dementsprechend soll das Teilnehmerarray dann jeweils passend vorsortiert werden. Also wenn der Verein nur "m" haben kann, dann sollen die "m" sortiert nach Namen zuerst im Auswahlbrowse erscheinen, wenn sie "w" sind die "w" sortiert nach Namen usw. Wie kann ich das mit dem Array so bauen? Mir fällt im Moment nicht ein, wie man sowas sortiert.

Ich bin mir nicht sicher aber ich vermute Du brauchst Nur eine "Bewertungsfunktion":
Code: Alles auswählen
FUNCTION SortierWert( cValue,cZuerst )
RETURN( iif( cValue==cZuerst,0,asc( cValue ) ) )

Damit müsstest du (vermutlich) dein Array einfach sortieren können. Z.B. (wenn im Array aWerte nur die Geschlechter drinstehen, anders sicher leicht umzusetzen):
Code: Alles auswählen
ASort( aWerte,/*nStart*/,/*nCount*/,;
       {|a1,a2|SortierWert( a1/*cValue*/,"M"/*cZuerst*/ )< ;
               SortierWert( a2/*cValue*/,"M"/*cZuerst*/ )}/*bOrder*/ )

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2370
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: Array spezialsortiert

Beitragvon Wolfgang Ciriack » So, 04. Dez 2016 9:04

Ich würde, wenn ein Verein nur einen "Typ" haben kann, gar nicht sortieren sondern in ein neues Array filtern.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2234
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin

Re: Array spezialsortiert

Beitragvon brandelh » Mo, 05. Dez 2016 10:24

Martin Altmann hat geschrieben:Wenn Du die Collation dahingehend änderst, dass die Reihenfolge der drei o.g. Buchstaben sich ändert in m -> w -> g,
müsste das auch Auswirkungen auf die eigentlich alphabetisch aufsteigend gewünschte Sortierung der Vereinsnamen haben


die Collation umzustellen, würde sich aber grundsätzlich auf alle Zeichenvergleiche / Sortierungen / Indexe auswirken, was hier ja nicht gewünscht ist.
Was ich nicht verstehe ist, warum Manfred damit ein Problem hat.
Das Feld nach dem sortiert wird, kann doch manipuliert werden und wenn man die Namen in 3 Gruppen möchte, stellt man einfach ein Zeichen für die Gruppe davor (wie schon geschrieben wurde).
Ob das nun passende Buchstaben oder Ziffern sind ist egal !

G1-Hans
G1-Otto
G2-Anton
G2-Emil
G3-Agate

eine Funktion zum Berechnen dieses Sortierfeldes (das dynamisch erzeugt wird und gar nicht so in dem Array steht) erleichtert das Debugging.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13372
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Nächste

Zurück zu Daten und Tabellen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste