Array spezialsortiert

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

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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 spezialsortiert

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

:?: 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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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 spezialsortiert

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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 spezialsortiert

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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 spezialsortiert

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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 spezialsortiert

Beitrag von Jan »

Schau Dir mal SetCollationTable() an.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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 spezialsortiert

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

wenn die Frage an mich ging-> :-k :dontknow:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array spezialsortiert

Beitrag von Manfred »

nönö, meine Aussgae ging nur in die Richtung zu erklären, das ich es mal wieder überlesen habe.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von UliTs »

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
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von Wolfgang Ciriack »

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
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Array spezialsortiert

Beitrag von brandelh »

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
Antworten