Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?! (https://www.delphipraxis.net/16141-calcfields-nur-bei-sichtbaren-feldern-im-dbgrid.html)

lorrey 11. Feb 2004 12:18


CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?!
 
Hallo!

Ich hab folg. Problem:

In meiner Anwendung ist ein DBGrid, das mit offenen Rechnungen von verschiedenen Projekten gefüllt wird.
Aus diesen Sätzen wird die Summe aller offenen Rechnungen berechnet, indem ich im Grid und im Query ein verstecktes Feld hinzugefügt habe, was vom Typ fkCalculated ist.

Somit hab ich die Berechung der Gesamtsumme in CalcFields eingebaut - siehe Code:

Code:
procedure TRechnung_UebersichtDlg.ReUebersichtQryCalcFields(
  DataSet: TDataSet);
begin

   dOverallSum := dOverallSum + ReUebersichtQry.fieldbyname('dAmountSum').asFloat;

end;
Nix spannendes soweit... dies funktioniert auch prima!

ABER:

Er berechnet nur die Sätze die im Grid sichtbar sind - d.h. wenn viele Sätze drin sind und man nach unten scrollen kann,
nimmt er nur die, die wirklich auf dem Screen (im Grid) sichtbar sind und die die quasi auf der nächste "Seite" sind lässt er weg !!!

Die Datenbank kann ich leider nicht rechnen lassen, da dort noch keine sub selects möglich sind ...!
Würde auch allein schon aus Performance Gründen gerne mit der schon vorhandenen Datenmenge im Grid rechnen.

Hab ihr so was schon mal gehabt?!?

Wie kann man das lösen?


Gruss
lorrey

Cobra 11. Feb 2004 13:24

Re: CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?
 
Hallo lorrey

Ich bin mir nicht sicher aber ich habe sowas auch schon gemacht, dann habe ich aber die Berechnung in OnCalcFields -Ereignis in der Query gemacht aber es könnte auch sein das ein FetchAll in der Query dir hilft.

:roll: also sicher bin ich nicht aber teste mal was ich geschrieben habe

:coder:

lorrey 11. Feb 2004 15:21

Re: CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?
 
Zitat:

Zitat von Cobra
Hallo lorrey

Ich bin mir nicht sicher aber ich habe sowas auch schon gemacht, dann habe ich aber die Berechnung in OnCalcFields -Ereignis in der Query gemacht aber es könnte auch sein das ein FetchAll in der Query dir hilft.

:roll: also sicher bin ich nicht aber teste mal was ich geschrieben habe

:coder:

Hi Cobra!

Nein leider besteht das Porblem immer noch, dass er nur die sichtbaren im Grid nimmt :gruebel:
Auch FetchAll bringt da nichts :cry:

Nebenbei OnCalcFields heist das Event, die Procedure dazu ist CalcFields - also das jeden wir vom gleichen... :wink:

Greetz!

Cobra 11. Feb 2004 15:58

Re: CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?
 
Zitat:

Zitat von lorrey

Nebenbei OnCalcFields heist das Event, die Procedure dazu ist CalcFields - also das jeden wir vom gleichen... :wink:

Greetz!

:zwinker: Jetzt hab ichs auch gesehen

Habe mir mal meinen Code angeschaut und musste feststellen ich im CalcFields nur Strings anders zusammensetze.
:| Sorry bin wohl keine große hilfe. :angle2:


:coder:

lorrey 11. Feb 2004 16:21

Re: CalcFields nur bei sichtbaren Feldern im DBGrid ... ?!?
 
Jetzt hab ich ne andere Lösung - und zwar einfach mit einer Schleife!
Ist zwar nicht das beste von der Performance her, aber so nimmt er wenigstens alle Sätze!

Anbei der Code:

Code:
   try
      ReUebersichtDBG.DataSource.DataSet.First;

      while ( not ReUebersichtDBG.DataSource.DataSet.EOF ) do
      begin
         CalcOverallSum;
         ReUebersichtDBG.DataSource.DataSet.Next;
      end;

   finally
       ReUebersichtDBG.DataSource.DataSet.First;
   end;

Danke für die Antworten!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.

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