Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SQL-Statement für kumulierte Summen?

880 views
Skip to first unread message

Donald Peter

unread,
Jun 25, 2001, 6:22:07 AM6/25/01
to
Kennt jemand von euch eine Lösung für ein SQL-Statement für kumulierte
Summen?
(Bezogen auf ein DataGrid!)
Etwa in der Art von Excel -> Für Zelle C2 gilt: "= C1+(A2-B2)"
oder auch Für Zelle C2 gilt: "= Summe(A1$:A2)-Summe(B1$:B2)"

Der SQL-Befehl sollte dann etwa so aussehen:
"SELECT [SOLL], [HABEN], ([SOLL]-[HABEN]+SALDO) AS SALDO FROM KONTO...
Die Spalte Saldo sollte dann also die aktuelle Summe der getätigten
Buchungen haben.

Bisher habe ich bei der Auswertung der Daten (Ein VB-DataReport) eine Do
Until Recordset.EOF Schleife benutzt um das Feld Saldo zu berechnen (Keine
Performance-Einschränkung).
Ich möchte jedoch denn Saldo auch in einem DATAGrid angezeigt bekommen mit
einem Execute SQL-Befehl
Bei aktuallisierung des DatatGrid mit einer Do Until Recordset.EOF Schleife
dauert mir das jedoch zu lange.

Durch bestimmte Umstande ist eine Excel-Datei Ist in diesem Falle nicht
möglich.

Villen Dank für jeden guten Ratschlag.
Donald Peter


Horst Innerkofler

unread,
Jun 25, 2001, 9:52:36 AM6/25/01
to
Hallo Donald!

Prinzipiell funktioniert das mit einer Unterabfrage (reines SQL-Statement).
Vielleicht hilft dir folgendes weiter:

SELECT *, (SELECT SUM([SOLL] - [HABEN]) FROM KONTO as SumSaldo WHERE
SumSaldo.Primärkey <= KONTO.Primärkey) AS [SALDO]
FROM KONTO
ORDER BY KONTO.Primärkey;

Für Primärkey steht dein Primärschlüsselfeld der Tabelle KONTO (Wie das Feld
heisst, kann ich aus deinen Angaben nicht erkennen).

Gruss, Horst


Donald Peter <don...@active.ch> schrieb in im Newsbeitrag:
3b3710bd$0$2439$4d4e...@news.ch.uu.net...

Peter Fleischer

unread,
Jun 25, 2001, 10:24:37 AM6/25/01
to
Peter,
wenn Du für den DataReport ein Recordset mit den aufgelaufenen Saldi
erstellt hast, warum kannst Du das nicht im DataGrid anzeigen?

Peter

"Donald Peter" <don...@active.ch> schrieb im Newsbeitrag
news:3b3710bd$0$2439$4d4e...@news.ch.uu.net...

...


Donald Peter

unread,
Jun 25, 2001, 11:32:50 AM6/25/01
to
Hallo Peter,
Ich hatte Erheblich Performance-Einbusse wenn ich die Salden im Adodc
einzeln berechnete (Ca 400 Record's).
Dies wäre jedesmal der Fall, wenn sich ein einzelner Record ändern würde.
Das DataGrid stellt diese Änderungen im Recordset jedenfalls in RealTime auf
dem Bildschirm dar.
Wenn ich aber die Salden in einem eigenen Recordset berechnete, ging das
recht zügig, das heiss man merkte fast nichts. Ich brauchte dann nur noch
das Recordset dem DataReport zuzuweisen.

Anderseits, hätte ich etwas mehr Geld beiseite, könnte ich mir natürlich
auch den CrystalReport leisten, bei welchem man Formeln mit Laufsummen in
der Detail-Gruppe plazieren könnte, was bei einem DataReport schlicht nicht
möglich ist.


"Peter Fleischer" <peter_fleis...@mail.ru> schrieb im Newsbeitrag
news:9h7hdf$va4$04$2...@news.t-online.com...

Donald Peter

unread,
Jun 25, 2001, 11:20:43 AM6/25/01
to
Hallo Horst,
Ich werde deinen Tip mal ausknobeln, bzw. ich werde mal versuchen, ob mir
das, was du unten beschreibst, auch gelingt.

Vielen Dank für deinen Tip.
Gruss: Donald

"Horst Innerkofler" <hinn...@fhl.li> schrieb im Newsbeitrag
news:uy04Z4X$AHA.1288@tkmsftngp07...

Peter Fleischer

unread,
Jun 25, 2001, 12:51:00 PM6/25/01
to
Peter,
ich verstehe nicht, wie Du das mit dem ADODC gelöst hast. Ich würde einfach
ein Recordset mit [SOLL], [HABEN] laden und ein lokales Recordset erzeugen.
Eine Übertragung der 400 Datensätze mit kumulieren der Saldi in das lokale
Recordset dürfte einen Bruchteil von Sekunden benötigen. Dann kannst Du das
Ergebnis im DataGrid und im DataReport problemlos anzeigen.

Peter

Donald Peter <don...@active.ch> schrieb in im Newsbeitrag:
3b375990$0$3383$4d4e...@news.ch.uu.net...
...


> Ich hatte Erheblich Performance-Einbusse wenn ich die Salden im Adodc
> einzeln berechnete (Ca 400 Record's).
> Dies wäre jedesmal der Fall, wenn sich ein einzelner Record ändern würde.
> Das DataGrid stellt diese Änderungen im Recordset jedenfalls in RealTime
auf
> dem Bildschirm dar.
> Wenn ich aber die Salden in einem eigenen Recordset berechnete, ging das
> recht zügig, das heiss man merkte fast nichts. Ich brauchte dann nur noch
> das Recordset dem DataReport zuzuweisen.
>
> Anderseits, hätte ich etwas mehr Geld beiseite, könnte ich mir natürlich
> auch den CrystalReport leisten, bei welchem man Formeln mit Laufsummen in
> der Detail-Gruppe plazieren könnte, was bei einem DataReport schlicht
nicht
> möglich ist.

...


Donald Peter

unread,
Jun 25, 2001, 1:08:15 PM6/25/01
to
Hallo Horst,
Vielen vielen Dank! Dein Tip war einfach Goldwert!

Ich war wirklich erstaunt, dass SQL (unter Mithilfe deines Wissens:-) So
stark sein kann!
Ich brauchte jetzt nämlich bloss noch den SQL anzupassen, und dem DataGrid
die Spalte Saldo hinzuzufügen, und alles lief hervorragend, mit einer rasend
schnellen Geschwindigkeit.

(Allerdings muss ich noch erwähnen dass ich zwar einen Primary [Hauptkonto#]
habe, ich in diesem Falle die Anordnung jedoch nach dem Datum ausgerichtet
habe, um eine falsche Kalkulation zu vermeiden.)

Public Const SQL001A = "SELECT *, (SELECT SUM([Soll] - [Haben]) FROM
Hauptkonto as SumSaldo WEHRE [SumSaldo].[Datum]<=[Hauptkonto].[Datum]) AS
Saldo FROM Hauptkonto ORDER BY Datum"

Nochmals Herzlichen Dank!!!
Gruss: Donald

"Horst Innerkofler" <hinn...@fhl.li> schrieb im Newsbeitrag
news:uy04Z4X$AHA.1288@tkmsftngp07...

Donald Peter

unread,
Jun 25, 2001, 1:25:55 PM6/25/01
to
Hallo Peter,
Ich danke dir für deine Hilfe,
Tja, damals war mir noch nicht ganz klar wie ich ein DataGrid an ein
Recordset binden konnte, ohne die Zuhilfenahme eines Adodc-Controlls.
Ausserdem hatte ich damals noch ein schwerwiegende Problem mit dem
Cachingverhalten des ADODC.Recordset (keine aktuallisierung des DataGrid),
das ich zwar aber währenddessen gelöst habe, mir aber die Sache zusäzlich
erschwerte.
Jetzt, da mein Problem aber doch noch einwandfrei gelöst werden konnte, bin
ich dir dennoch dankbar für deine Mühe.

Mit freundlichen Grüssen: Donald

"Peter Fleischer" <peter.fleis...@gmx.de> schrieb im Newsbeitrag
news:9h7qer$frq$03$1...@news.t-online.com...

Ingo Moch

unread,
Jul 1, 2001, 2:40:53 PM7/1/01
to
Hallo,

"Donald Peter" <don...@active.ch> schrieb:

> hätte ich etwas mehr Geld beiseite, könnte ich mir
> natürlich auch den CrystalReport leisten,

Eine aeltere Version davon wird mit VB mitgeliefert.

[TOFU entfernt] www.got.to/quote

0 new messages