AGB  ·  Datenschutz  ·  Impressum  







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

OnCalcFields bei Spaltenwechsel im TDBGrid

Ein Thema von Morphie · begonnen am 18. Jun 2013 · letzter Beitrag vom 18. Jun 2013
Antwort Antwort
Seite 1 von 2  1 2      
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 14:32
Ich habe ein TADQuery (FireDAC) mit diversen calculated Fields an eine TDBGrid-Komponente gehängt und möchte in dem Grid bestimmte Berechnungen durchführen...
Die Query-Komponente führt OnCalcFields allerdings immer erst nach einem Update aus (z.B. wenn ich zum nächsten Datensatz wechsele), was auch logisch ist, da die Query-Komponente von einem Spaltenwechsel gar nichts mitkriegt.

Wie kann ich die berechneten Felder bereits neu berechnen lassen, wenn ich im Grid die Spalte wechsele?
Angenommen ich habe folgende Spalten: X (Persistent), Y (Persistent), Z (Berechnet)
Wenn ich jetzt X oder Y im Grid bearbeite, soll Z sofort neu berechnet werden, sobald ich in eine andere Spalte, bzw. aus dem Editmodus springe.

Im Moment gehe ich folgenden Weg:
Delphi-Quellcode:
procedure TDummyForm.DBGrid1ColEnter(Sender: TObject);
begin
  if (self.Query1.State = dsEdit) then
    self.Query1CalcFields(Query1);
end;

procedure TDummyForm.Query1CalcFields(DataSet: TDataSet);
begin
  // Hier werden die Spalten neu berechnet
end;
Ich rufe die Methode also selbst in einem Event des Grids auf.

Gibt es einen eleganteren Weg?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 14:38
Du könntest OnDataChange von der Datasource dafür verwenden.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 14:59
Das Problem ist, dass OnDataChange auch bei InternalCalc-Feldern aufgerufen wird. Ich habe so also eine Endlosschleife...
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:01
Ah ok, reicht da die Abfrage auf State und Field nicht um das abzufangen?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:04
Eigentlich werden die CalcFields automatisch bei jeder Änderung eines Datenfeldwertes neu berechnet. Irgendetwas stimmt da bei dir nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:10
Eigentlich werden die CalcFields automatisch bei jeder Änderung eines Datenfeldwertes neu berechnet. Irgendetwas stimmt da bei dir nicht.
Nur wenn AutoCalcFields=True ist und davon wird wegen ständigem Ereignisauslösen meist abgeraten.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#7

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:11
Ist bei mir aber True, trotzdem wird nur nach jedem Datensatzwechsel neu berechnet... ich wühle mich mal durch die Quellen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:13
Eigentlich werden die CalcFields automatisch bei jeder Änderung eines Datenfeldwertes neu berechnet. Irgendetwas stimmt da bei dir nicht.
Nur wenn AutoCalcFields=True ist und davon wird wegen ständigem Ereignisauslösen meist abgeraten.
Das wäre aber hier wohl der "elegantere Weg" nach dem anfangs gefragt wurde.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:15
Das wäre aber hier wohl der "elegantere Weg" nach dem anfangs gefragt wurde.
Stimmt, immer diese Wege nach Rom ...
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#10

AW: OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 15:29
Okay... Also sobald man mindestens ein InternalCalcField im DataSet hat, wird OnCalcFields nicht mehr automatisch aufgerufen...
Ist das jetzt ein Bug, oder by Design?! =/

Ich habe XE3 mit FireDAC 3119 (7.0.1)
Kann das mal bitte jemand mit einer neueren Version checken?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:20 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