Entwickler-Ecke
Datenbanken - Daten aus einer Spalte summieren
diggebaggen - Fr 31.12.04 12:23
Titel: Daten aus einer Spalte summieren
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 - Fr 31.12.04 13: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
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
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
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
diggebaggen - Fr 31.12.04 14: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 - Fr 31.12.04 15: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
grayfox - Fr 31.12.04 18:09
| Zitat: |
| dass er den Befehl... nicht kennt. |
wo sind denn da befehle? ich seh in den quelltexten keinen einzigen befehl :shock:
diggebaggen - Sa 01.01.05 01: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 - Sa 01.01.05 15: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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!