Autor Beitrag
diggebaggen
Hält's aus hier
Beiträge: 15


D3 Prof
BeitragVerfasst: Fr 31.12.04 13:23 
Moinsen...also folgendes Problem:

Ich habe eine Tabelle, in der verschiedene Rechnungspositionen eingetragen sind. Immer mit Datum blablabla.

Jetzt möchte ich gerne die Beträge aus den einzelnen Zeilen, (die Beträge stehen immer in der dritten Zeile 'Betrag') zusammenaddieren und in ein Edit-Feld schreiben ?

Kann mir da vielleicht jemand helfen ? Ich hab leider keine Idee wie ich das machen soll.
Danke schonmal im voraus, Gruß diggebaggen
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Fr 31.12.04 14:59 
hallo diggebaggen!

gut, dass das thema 'summieren von spalten einer tabelle' hier im forum noch nie behandelt wurde, somit kann ich es mal erklären ;)

um dein problem zu lösen gibt es mehrere wege...

verwendung einer table-komponente

1) du iterierst satzweise durch die tabelle und summierst die beträge der einzelnen datensätze, welche zu deiner rechnung gehören

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
betrag:= 0;
table1.First;
while not table1.eof do begin
  if table1.FieldByName('Rechnung_ID').asInteger = aSuchID then 
    Betrag:= Betrag + table1.FieldByName('Betrag').asFloat;
  table1.Next
end;


2) du setzt einen filter und iterierst durch die selektierten datensätze

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
betrag:= 0;
FilterString:= Format('Rechnung_ID = %d',[aSuchID]);
table1.Filter:= FilterString;
table1.filtered:= true;
while not table1.eof do begin
  Betrag:= Betrag + table1.FieldByName('Betrag').asFloat;
  table1.Next
end;
table1.filtered:= false;



verwendung der komponente query

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  with query1 do begin
    clear;
    SQL.ADD('SELECT SUM(Betrag) as Summe FROM tblRechnungen ');
    SQL.ADD('WHERE (Rechnung_ID = aSuchID)');
    open;
    Betrag:= Field[0].asFloat;
  end;


alle quellcodes sind nur ins forum getippt und daher {$UNTESTED} - aber anhand von ihnen sollte die vorgehensweise klar sein.

mfg, stefan


Zuletzt bearbeitet von grayfox am Fr 31.12.04 19:05, insgesamt 1-mal bearbeitet
diggebaggen Threadstarter
Hält's aus hier
Beiträge: 15


D3 Prof
BeitragVerfasst: Fr 31.12.04 15:54 
OK, Danke erstmal. Klingt logisch.

Hab den ersten Ansatz genommen. Einziges Problem was ich jetzt habe ist, dass er den Befehl:

aSuchID

nicht kennt. vielleicht bin ich zu blöd, aber kann das sein, dass delohi 3 den nicht kennt ? Oder stand der für irgendwas anderes, was ich da eintragen muss ?
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 31.12.04 16:52 
diggebaggen hat folgendes geschrieben:
OK, Danke erstmal. Klingt logisch.

Hab den ersten Ansatz genommen. Einziges Problem was ich jetzt habe ist, dass er den Befehl:

aSuchID

nicht kennt. vielleicht bin ich zu blöd, aber kann das sein, dass delohi 3 den nicht kennt ? Oder stand der für irgendwas anderes, was ich da eintragen muss ?


Hi,

aSuchID ist hier nur ein beispiel. Es ist der Name einer Variable und wird hier verwendet, um nur die in Frage kommenden Rechnungsdatensätze zu berücksichtigen. Beispielweise hast du 100 rechnungen und willst nur die beträge der positionen auf rechnung mit der nummer 42 berechnen, dann setzt du aSuchID := 42.

Wenn du einfach die gesamte summe der Rechnungsbeträge summieren willst, kannst du die Zeile mit der if-Abfrage auskommentieren und dann klappt es schon.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Fr 31.12.04 19:09 
Zitat:
dass er den Befehl... nicht kennt.


wo sind denn da befehle? ich seh in den quelltexten keinen einzigen befehl :shock:
diggebaggen Threadstarter
Hält's aus hier
Beiträge: 15


D3 Prof
BeitragVerfasst: Sa 01.01.05 02:06 
Naja, bin halt nicht so der Informatik-Crack, mach eigentlich nur Musik am PC, dass brauch ich für die Schule.

Aber nun gehts, ich bedanke mich vielmals !!! :D

Ach so, könnt ihr mir auch noch schnell sagen, wie ich die real-werte auf zwei Stellen runde wenn ich sie in ein Edit-Feld schreibe ?
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Sa 01.01.05 16:52 
am schnellsten geht es, wenn du die forums-suche benutzt, denn dieses thema wurde bestimmt schon mal behandelt ;)

du wirst auch bestimmt in der online-hilfe von delphi fündig werden. schau mal unter FloatToStr bzw FloatToStrF nach

mfg, stefan