![]() |
Berechnung eines Feldes - zu welchem Zeitpunkt?
Guten Morgen DPler,
mache den ganzen Abend einen Gedankenfehler und wollte Euch jetzt mal nach Eurer Meinung fragen. Ich habe vier DB-Tabellen: T1 / T2 / T3 / S1 T1 ist die Master von T2 und T3 ist eine Zusammensetzung von T2 und T1. Wenn ich in T2 etwas hinzufüge (Zahlen), wird aus Werten von T1 und T2 ein DS in T3 generiert (die Zahl aus T2 und der Vorgang aus T1). In S1 habe ich ein Feld das die Summe aller Zahlen (- und + Werte) aus T3 zu einem BESTIMMTEN Vorgang anzeigen soll. Wann oder wie ist es nun sinvoll das Feld in S1 zu berechnen und den Wert zu hinterlegen? OnCalcFields? <- es sind mächtig VIELE Zahlen (>5000) AfterPost? <- was ist dann aber beim löschen und aktualisieren von T2 (DS wird auch in T3 gelöscht)? oder AfterInsert, AfterDelete ???? :wall: Ich komm nicht auf die beste Lösung, um alles zu berücksichtigen (Insert/Delete/Update) und dabei so selten wie möglich das Feld neu zu berechnen (da VIELE Zahlen). Ist übrigens mySQL, sowas wie Trigger, StoredProc, etc. gibbet nicht! Ich bin wie immer für jeden Tipp, Ratschlag DANKBAR! Beste Grüße Matt |
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Ohne jetzt den genauen Ablauf verstehen zu müssen, kann ich prinzipiell sagen, daß es ne sehr riskante Sache ist, irgendwelche berechneten Felder in der Datenbank zu speichern. Da wirst du immer damit zu kämpfen haben, wenn irgendwelche Datensätze gelöscht/hinzugeflickt/geändert werden, damit du immer auf dem richtigen Stand bist. Berechne deine Felder nach Möglichkeit immer bei deinen Abfragen neu aus, dann bist du sicher daß der Wert auch stimmt.
|
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Hallo
Das ist aber nicht immer korrekt. Wenn du z.B. Rechnungen erstellst, und die Buchungszeile aus deiner Rechnung gesteht aus der MENGE * Artikelpreis. Wenn sich der Artikelpreis ändert dann dürfen sich aber nicht deine bereits erstellten Rechnungen ändern, das heisst der Buchungswert ist in der DB gespeichert. :zwinker: mfg Bundy |
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Zitat:
|
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Sorry Denkfehler :wall: du hast natürlich recht. Die Summen werden zur Laufzeit berechnet. :oops:
|
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Wenn ich Euch richtig verstehe soll ich das Summen Feld in S1 immer dann automatisch berechnen, wenn ich den Datensatz anzeigen lasse? Also z.B. bei OnChange? Dann dauert der Datensatzwechsel einige Sekunden, bei sovielen Einträgen, die er zusammenrechnen muss, das kann ich ich eigentlich keinem zumuten.
Da Ihr das Beispiel Menge * Artikelpreis genannt habt bleiben wir mal dabei und tun so als würde ich die Artikelbestände berechnen wollen (Summe Wareneingänge - Summe Warenausgänge). Wie wäre es denn in solchem Fall am betsen zu realisieren? Gruß Matt |
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
Ich würds gar nicht über Delphi machen, sondern mir gleich ne entsprechende SQL Abfrage basteln, so daß dir der MySQL Server gleich die gewünschten Ergebnisse liefert.
|
Re: Berechnung eines Feldes - zu welchem Zeitpunkt?
OK, danke Jelly, ich werde mal schauen, wie ich das am betsen hinbekomme!
Gruß Matt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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-2025 by Thomas Breitkreuz