Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Aufsummieren im Record (https://www.delphipraxis.net/31245-aufsummieren-im-record.html)

Mauli 6. Okt 2004 15:44


Aufsummieren im Record
 
Hallo,

ich laufe hier nur noch im Kreis herum. :wall:

Ich beschreibe mal was ich machen möchte:

Ich habe in der Deklaration:
Delphi-Quellcode:
type TStreamKnoten = record
                       ID : Integer;
                       ISIN : String[12];
                       B_S : String[1];
                       Nominal : Double;
                       Kurs : Double;
                       Betrag : Double;
                       Commission : Double;
                     end;


var
  mstream: TMemoryStream;
  Streamknoten : TStreamKnoten;
Streamknoten habe ich aus einer Textdatei gefüllt.

Jetzt will ich die Reihen auf summieren, die die gleiche ISIN und bei B_S den gleichen Wert haben.

Also so (wenn ich eine Tabelle hätte):

SQL-Code:
Select ISIN,
       B_S,
       SUM(Nominal) as Nominal
       .....
Group by ISIN, B_S
Hat jemand eine Idee wie ich das mit diesem Record mache? - Ist bestimmt einfach. Ich sehe es nur nicht....


Danke

Jens Schumann 6. Okt 2004 15:51

Re: Aufsummieren im Record
 
Hallo,
ich muss mal nach fragen. Möchtest Du Die Summe Nominal für alle Records mit gleichem ISIM und B_S haben? Dann wäre das Ergebnis ein Double. Oder möchtest Du es tatsächlich so haben, wie das SQL Statement es leifern würde? Das wäre dann eine Liste von Records. Wobei jeder Record der Ergebnismenge die Summe der Records mit gleichem ISIM und B_S enthält.

Mauli 6. Okt 2004 15:55

Re: Aufsummieren im Record
 
Ich möchtest die Summe Nominal usw. für alle Records mit gleicher ISIN und B_S haben.

Vielleicht verwirrt die SQL nur.

Also z.b.

ISIN1 || B || 100
ISIN2 || B || 2000
ISIN1 || B || 300
ISIN2 || S || 500

soll geben:

ISIN1 || B || 400
ISIN2 || B || 2000
ISIN2 || S || 500

Jens Schumann 6. Okt 2004 16:03

Re: Aufsummieren im Record
 
Hallo,
der SQL hat nicht verwirrt. Du möchtest es nämlich genau so haben.

Ich würde so vorgehen. (Das setzt voraus, dass alle Records in einer Liste (TList o. Array oder so) sind. Das nennen wir mal Ausgangsliste. Das Ergebnis wird dann in der Zielliste gespeichert.

- Itteriere über alle Records in der Ausgangsliste.
- Füge die Records in die Zielliste. Überprüfe aber vorher, ob es nicht schon
einen Record mit gleichem ISIN und B_S gibt. Wenn ja, addiere den Wert Nominal
aus der Ausgangsliste zu dem Wert Nominal in der Zielliste. Wenn nein, dann
füge den Record in die Zielliste.

Mauli 6. Okt 2004 16:09

Re: Aufsummieren im Record
 
Ich habe kaum mit Records arbeiten müssen (dürfen) hättest du vielleicht auch ein bißchen code?

Danke schon mal.

Jens Schumann 7. Okt 2004 07:58

Re: Aufsummieren im Record
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe ein kleines Beispiel gebastelt.
Ich lehne Records grundsätzlich ab. Deshalb basiert das Beispiel auf Objekten.
In der unit sum_impl.pas ist das Objekt für die Daten (TStreamNode) und das
Verwaltungsobjekt (TStreamNodes) deklariert.

Mauli 7. Okt 2004 08:36

Re: Aufsummieren im Record
 
Tausend Danke!!!

Du hast mir sehr geholfen!!

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz