Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: StringGrid nach Spalten aufsteigend und absteigend sortieren

  Alt 10. Aug 2011, 16:36
Hallo Zusammen,

vielen Dank für die vielen Antworten und Anmerkungen!

Vorab, auch wenn es nicht wirklich schön ist, habe ich das Problem mit einer Repeat- und einer For-Schleife gelöst.
Delphi-Quellcode:
  i:=0;
  repeat
    i:=i+1;
    Status:=true;
    for J := 1 to Grid.RowCount - 1 do
      begin
        if (Grid.Cells[3,j]<>'') and (Grid.Cells[3,j]<>' ') and
           (Grid.Cells[3,j-1]<>'') and(Grid.Cells[3,j-1]<>' ') and
           (Grid.Cells[6,j-1]<>'') and(Grid.Cells[6,j-1]<>' ') and
           (Grid.Cells[6,j]<>'') and(Grid.Cells[6,j]<>' ') and
           (Grid.Cells[0,j]=Grid.Cells[0,j-1]) and
           (strtoint(Grid.Cells[6,j])>strtoint(Grid.Cells[6,j-1])) then
          begin
            Status:=false;
            for K := 0 to Grid.ColCount - 1 do
              begin
                Tempo:=Grid.Cells[k,j-1];
                Grid.Cells[k,j-1]:=Grid.Cells[k,j];
                Grid.Cells[k,j]:=Tempo;
                Tempo:=''
              end;

          end;

      end;
  until (Status=true) or (I>1000) ;
Die vielen If-Anweisungen benötge ich zum einen um die Anforderungen zu beschreiben und um mögliche Fehler innerhalb der automatisch eingelesenen Daten vorzubeugen.
Bin aber an anderen grundsätzlichen Lösungen interessiert!

Warum lasse ich das den SQL-Server nicht machen? Um es kurz zu sagen, ich weiß nicht, wie das in diesem Falle funktionieren soll.
Aber ich beschreibe Euch die Situation mal, im Zweifel lerne ich - wie so oft.

Mein StringGrid wird aus Daten sechs Tabellen befüllt. Aber sehen wir uns erst einmal nur die beiden wichtigsten an. Das ist auf der einen Seite der Kundenbedarf und auf der anderen Seite die Fertigungsaufträge. In der Darstellung nachher, soll es genauso aussehen, wie ober beschrieben, nämlich komplett sortiert nach Lieferdatum (für die Kundenbedarfe) und Fertigstellungsdatum (für die Fertigungsaufträge). Während die Kundenbedarfsdaten sich auf zwei Spalten konzentrieren, stehen die Fertigungsauftragsdaten ind drei weiteren, aber nie in der gleichen Zeile.
Wenn es mehrere Fertigungsaufträge mit dem gleichen angestrebten Fertigstellungsdatum gibt, sollen diese so sortiert sein, dass der weiteste oben steht.

Die restlichen Tabellen werden für andere Daten benötigt, die zu den Fertigungsaufträgen noch benötigt werden.

Hier noch einmal die Ziel-Darstellung:
Datum---Kunde---Bedarf---Fertigungsauftrag---Arbeitsgang
15.08.----------------------------------123--------------------60
15.08.----------------------------------100--------------------50
16.08.-----xy-------100
16.08.-----zz-------200
18.08.----------------------------------119--------------------40
18.08.----------------------------------124--------------------30
18--------------------------------------125--------------------20
19.08.-----ab-------250
19.08.-----df-------180

Darüber hinaus wird eine Spalte berechnet, die ich aber jetzt auch außen vorlassen möchte.

Würdet Ihr so eine Aufgabenstellung, die ich schon vereinfacht habe, versuchen komplett auf dem Datenbankserver zu generieren? Ich habe keine Idee, wie das funktionieren soll.

Vielen Dank und Lieben Gruß
Ykcim
Patrick
  Mit Zitat antworten Zitat