"manuell" sortierung ändern

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

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

"manuell" sortierung ändern

Beitrag von AUGE_OHR »

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

Beitrag von Martin Altmann »

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

Beitrag von brandelh »

Hallo Jimmy,

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.
2. Index lassen, Ergebnisse in Array zwischenspeichern und vorsortieren ...

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

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

Beitrag von brandelh »

Hi Jimmy,
AUGE_OHR hat geschrieben:Eine "Erweiterrung" des Index nützt nichts da die Rechnungs-Nr. ja fortlaufend sind und es erst "hinten" daran käme
wenn der 1. Sortierbegriff keine doppelten Datensätze hat, braucht man keinen 2. Sortierbegriff :!:

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Irgendwie passt das nicht zueinander. Auf jeden Fall ist die Array-Sortierung, dank asort() sehr flexibel und schnell.
Ich habe das "Problem" nicht richtig beschrieben. Mein Probelm lag
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
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Jimmy,

Du kannst das per DragDrop verschieben.
In den News gibt es ein Tool dafür (glaube auch mit Source)
Suche nach DRAGBRO

Klaus
Antworten