AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnChange behindert Post

Ein Thema von ioster · begonnen am 15. Jan 2020 · letzter Beitrag vom 22. Jan 2020
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.706 Beiträge
 
Delphi 12 Athens
 
#1

AW: OnChange behindert Post

  Alt 22. Jan 2020, 09:42
Im AfterOpen der Tabellen habe ich an das OnChange-Ereignis von bestimmten Feldern Prozeduren gehängt, um Adress- und Artikelstammdaten nachzulesen oder den Gesamtpreis von Position und Gesamtbeleg zu aktualisieren.
Das ist vermutlich die falsche Vorgehensweise. Ein Post auf ein DataSet innerhalb eines OnChange-Events eines Fields dieses DataSets kann nicht funktionieren!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.413 Beiträge
 
Delphi 12 Athens
 
#2

AW: OnChange behindert Post

  Alt 22. Jan 2020, 10:43
Das OnChange der sichtbaren Controls reagiert ja, wenn sich der Inhalt dieses Controls ändert
und das passiert auch z.B. beim Open, Close, Scroll, Refresh des DataSets und dort sollte sowas wie Edit/Insert/Post/Delete in einem Event besser nicht vorkommen.

Warum werden die Berechnungen nicht in einem Trigger in der Datenbank erledigt, bzw. im BeforePost, schon beim Speichern des Datensatzes?
Auch als CalcField oder schon im SELECT können während des Ladens Werte berechnet werden.

Im TField.OnChange sollte auf dessen DataSet auch niemals "Post" ausgeführt werden.

Einfaches Beispiel:
FieldA.OnChange ändert FieldB und FieldC und macht anschließend Post
* FieldB.OnChange ändert auch irgendwas und macht ebenfalls Post
weiter im FieldA.OnChange, kommt nun FieldC dran ... was nicht geht, weil schon Post schon durch ist
und immernoch im FieldA.OnChange, käme nun das POST, was oben ausgegraut wurde, da sich das nächste Event dazwischen schob
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Jan 2020 um 10:57 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: OnChange behindert Post

  Alt 22. Jan 2020, 10:46
Mir scheint die Preisberechnung etwas "verwickelt". Sie ist an recht vielen Stellen eingebunden und verursacht gefühlt dutzende Posts. Und ist tatsächlich sichergestellt, dass die Kopfdaten (Dataset) "richtig steht", also synchron zu dem "Field" Dataset?

Außerdem werden hier offenbar redundante Infos abgelegt, die man problemlos während der Anzeige als berechnete Felder liefern kann oder täusche ich mich.

Das Ziel wäre m.E. eine vom Dataset(s) entkoppelte Berechnung über Paramter und das einmalige Auslösen dieser Berechnung, sowie einmalige Speichern der Berechnung.
Gruß, Jo
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: OnChange behindert Post

  Alt 22. Jan 2020, 18:46
Hallo,
Zitat:
Wie bei jeder anderen Technologie muss man halt wissen, wie man damit umgehen muss
Da hast du vollkommen Recht!
Deshalb lasse ich es ja sein
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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