Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hintergrundberechnungen (https://www.delphipraxis.net/29362-hintergrundberechnungen.html)

Igotcha 8. Sep 2004 09:34


Hintergrundberechnungen
 
Hallo zusammen,

ich stehe momentan vor einem Umsetzungsproblem:

Ich habe eine Anwendung mit 4 VirtualTreeviews, die kaufmännische Daten beinhalten. Diese sind innerhalb des TV in Gruppen zusammengefaßt. Z.b. enthält die Gruppe Kosten die Personalkosten, Reiskosten, etc.

Die Inhalte lese ich aus einer MySql-DB und baue die TVs entsprechend auf, bilde Zeilen- und Gruppensummen - kein Problem.

Von den 4 TVs gibt es einen (nennen wir ihn TV1), in dem der Anwender Daten eingeben bzw. editieren kann. Nach der Eingabe wird der entsprechende Datensatz in die DB zurückgeschrieben. Nun hat diese Eingabe in TV1 aber auch Auswirkungen auf TV2 und TV4 (Zeilensumme, Gruppensumme, etc.).

Was man machen könnte ist, aber totaler Quatsch wäre, nach jeder Eingabe alle 4 TVs wieder aus der Datenbank zu lesen und aufzubauen.

Ich dachte mir nun folgendes:

- Datensatz updaten
- im Hintergrund TV1, TV2 und TV4 an den entsprechenden Positionen neuberechnen und die Anzeige updaten

Wobei der Updateprozeß so aussehen würde:

- Berechne Zeilensumme des editierten Knotens neu
- Berechne Summe Monatswert der Gruppe (des Parents) neu
- Berechne die statische(n) Summe(n) neu, in denen die veränderte Gruppe vorkommt (Z.B. EBIT=UMSATZ-KOSTEN) - eine Formel-Information dazu ist in jedem Knoten hinterlegt

Da werde ich wohl um Threads nicht drumherum kommen, oder? Und was könnte es evtl. für Probleme dabei geben (z.B. Hintergrundberechnung läuft noch - obwohl das eigentlich ziemlich fix gehen sollte - und es kommt eine neue Eingabe).

Gruß Igotcha

ibp 8. Sep 2004 09:53

Re: Hintergrundberechnungen
 
..erst eine eingabe zulassen, wenn alles neu berechnet wurde!

Igotcha 8. Sep 2004 09:59

Re: Hintergrundberechnungen
 
Zitat:

Zitat von ibp
..erst eine eingabe zulassen, wenn alles neu berechnet wurde!

Nur dann bräuchte ich ja keine Threads bzw. eine Hintergrundberechnung, denn dann könnte ich nach der Eingabe "RecalcAll()" aufrufen und warten, bis er fertig ist - also schön sequentiell.

Vielleicht noch eine Info, warum ich mir über eine "Hintergrundberechnung" überhaupt Gedanken mache:

Die TVs sind auf vier Tabsheets angeordnet. Der Anwender sieht bei der Dateneingabe in TV1 die anderen TVs nicht, bzw. muß erst umschalten, was auch wieder Zeit kostet (in der Zwischenzeit sollte die Ansicht neu berechnet worden sein).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 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