"manuell" sortierung ändern
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
"manuell" sortierung ändern
hi,
also es geht darum eine Liste zu drucken. Der Anfangs-/Ende- Wert
wird eingegeben und SCOPE gesetzt. Nun ist aber die "Reihenfolge"
durch den Index (RechungNr) "vorgegeben".
Angenommen es sind 10 Positionen. Der User möchte aber die 5st.
Position an "erster" Stelle haben und die 6st an "vorletzter" Stelle...
jemand eine Idee wie ich da anfange ?
gruss by OHR
Jimmy
also es geht darum eine Liste zu drucken. Der Anfangs-/Ende- Wert
wird eingegeben und SCOPE gesetzt. Nun ist aber die "Reihenfolge"
durch den Index (RechungNr) "vorgegeben".
Angenommen es sind 10 Positionen. Der User möchte aber die 5st.
Position an "erster" Stelle haben und die 6st an "vorletzter" Stelle...
jemand eine Idee wie ich da anfange ?
gruss by OHR
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jimmy,
sorry - ich verstehe nur Bahnhof!
Mach' doch mal bitte ein Beispiel - wenn ich Dich richtig verstanden habe, kannst Du doch die Reihenfolge der Rechnungsnummern in ein Array schreiben und dieses dann von vorne bis hinten durchgehen. Du nimmst dann alle Einträge des ersten Elementes (z.b. die vierte Rechnungsnummer) und schreibst die in sortierter Reihenfolge raus - dann das gleiche mit dem zweiten Element (das z.B. die achte Rechnungsnummer ist) usw. usf.
Oder meintest Du das ganz anders?
Viele Grüße,
Martin
sorry - ich verstehe nur Bahnhof!
Mach' doch mal bitte ein Beispiel - wenn ich Dich richtig verstanden habe, kannst Du doch die Reihenfolge der Rechnungsnummern in ein Array schreiben und dieses dann von vorne bis hinten durchgehen. Du nimmst dann alle Einträge des ersten Elementes (z.b. die vierte Rechnungsnummer) und schreibst die in sortierter Reihenfolge raus - dann das gleiche mit dem zweiten Element (das z.B. die achte Rechnungsnummer ist) usw. usf.
Oder meintest Du das ganz anders?
Viele Grüße,
Martin
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.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Jimmy,
es geht auf 2 Arten:
1. Index erweitern um die 2. Sortierfolge:
2. Index lassen, Ergebnisse in Array zwischenspeichern und vorsortieren ...
es geht auf 2 Arten:
1. Index erweitern um die 2. Sortierfolge:
Code: Alles auswählen
DBF-Felder:
nRechNr N 6
nRechPos N 3 // oder sonst ein Sortierkriterium, das immer gebraucht wird.
eigentlich suchst du nach nRechNr und hast bisher den Index auf dieses Feld.
Nun wird der erweitert:
index on str(nRechNr)+str(nRechPos)
scope oder Filter auf str(nRechNr,6) ähnlich wie bisher,
aber die Anzeigereihenfolge ist jetzt automatisch auf str(nRechPos) sortiert, da ja die nRechNr immer gleich ist.
Code: Alles auswählen
obiges Beispiel
Anwender hat in Listbox Sortierung nach nRechPos gewünscht.
index und scope / filter ist auf nRechNR
go top (1. Datensatz erzwingen, falls nicht automatisch )
aDaten := {}
do while ! eof() // filter und scope bleiben immer in gleicher nRechNR
aadd(aDaten, {nRechNr, nRechPos, cTxt, nBetrag ....})
skip
enddo
// sortierung nach Spalten wäre auch möglich, du must halt wissen
// wonach sortiert werden soll und dieses Arrayelement musst du angeben.
aDaten := aSort(aDaten,,,{|a,b| a[2] < b[2]})
Daten aus aDaten ausgeben z.B. Quickbrowse mit Arrayverknüpfung ...
diese Daten könnte man dann auch nachträglich umsortieren ...
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
ok danke. Ich hab es jetzt auch soweit rausbekommen das ich wohl
erst die im SCOPE enthaltenen Datensätze "umschaufeln" muss
(Array oder Temp-DBF) bevor ich die "manuell" sortieren kann.
Eine "Erweiterrung" des Index nützt nichts da die Rechnungs-Nr.
ja fortlaufend sind und es erst "hinten" daran käme
danke nochmal, es gibt solche (Mon)tage wo man ein Brett vorm Kopf
hat ...
gruss by OHR
Jimmy
ok danke. Ich hab es jetzt auch soweit rausbekommen das ich wohl
erst die im SCOPE enthaltenen Datensätze "umschaufeln" muss
(Array oder Temp-DBF) bevor ich die "manuell" sortieren kann.
Eine "Erweiterrung" des Index nützt nichts da die Rechnungs-Nr.
ja fortlaufend sind und es erst "hinten" daran käme
danke nochmal, es gibt solche (Mon)tage wo man ein Brett vorm Kopf
hat ...
gruss by OHR
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi Jimmy,
Ich dachte die Rechnungsnummer wäre identisch, da z.b. Rechnungspositionen anders sortiert werden sollen.
Irgendwie passt das nicht zueinander. Auf jeden Fall ist die Array-Sortierung, dank asort() sehr flexibel und schnell.
wenn der 1. Sortierbegriff keine doppelten Datensätze hat, braucht man keinen 2. SortierbegriffAUGE_OHR hat geschrieben:Eine "Erweiterrung" des Index nützt nichts da die Rechnungs-Nr. ja fortlaufend sind und es erst "hinten" daran käme
Ich dachte die Rechnungsnummer wäre identisch, da z.b. Rechnungspositionen anders sortiert werden sollen.
Irgendwie passt das nicht zueinander. Auf jeden Fall ist die Array-Sortierung, dank asort() sehr flexibel und schnell.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
darin das ich mich vom Index nicht trennen (wollte) und deshalb in
die falsche Richting dachte. mit einem Array oder TempDBF sieht das
ganze schon anders aus.
Ich hab jetzt eine DBF genommen mit XbpBrowse und versuche raus
zu bekommen ob man wohl einen Datensatz per "DragDrop verschieben"
kann ...
danke nochmal für die Hilfe
gruss by OHR
Jimmy
Ich habe das "Problem" nicht richtig beschrieben. Mein Probelm lagbrandelh hat geschrieben: Irgendwie passt das nicht zueinander. Auf jeden Fall ist die Array-Sortierung, dank asort() sehr flexibel und schnell.
darin das ich mich vom Index nicht trennen (wollte) und deshalb in
die falsche Richting dachte. mit einem Array oder TempDBF sieht das
ganze schon anders aus.
Ich hab jetzt eine DBF genommen mit XbpBrowse und versuche raus
zu bekommen ob man wohl einen Datensatz per "DragDrop verschieben"
kann ...
danke nochmal für die Hilfe
gruss by OHR
Jimmy