Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi OnCalcfield 6x ausgelöst bei 2 Datensätzen (https://www.delphipraxis.net/69591-oncalcfield-6x-ausgeloest-bei-2-datensaetzen.html)

Karstadt 17. Mai 2006 15:51

Datenbank: Mysql • Version: 4 • Zugriff über: mydac

OnCalcfield 6x ausgelöst bei 2 Datensätzen
 
Hallo. Wie kann ich das Ereigniss nur 1x pro datensatz auslösen?

Delphi-Quellcode:
    with Tabelle do
    begin
      ControlsDisabled;
      Tag := 1;
      refresh;
      Tag := 0;
      EnableControls;
    end;


  ONCALCFIELD
  begin
     with Tabelle do
     begin
      IF Tag = 1 then exit;
      Showmessage(''); // 6 mal bei 2 Datensätzen? WARUM?
    end;
  end;

mojo777 18. Mai 2006 00:22

Re: OnCalcfield 6x ausgelöst bei 2 Datensätzen
 
hmm.... kannst du die operationen nicht auf IB (oder so) verlagern? das geht dann auf jeden fall schneller.
Der Merhfache durchlauf hat etwas mit dem "scrollen" über die datensätze zu run. omputedBy und scrollen sind miteinenader verbunden und es lohnt sich (fast nie) größere Berechnungen so anzustellen.


gruß

Karstadt 18. Mai 2006 08:09

Re: OnCalcfield 6x ausgelöst bei 2 Datensätzen
 
Guten Morgen!

Delphi-Quellcode:
with Tabelle do
    begin
      ControlsDisabled;
      Tag := 1;
      Recno := Recno;
      Tag := 0;
      EnableControls;
    end;
Mit diesen Trick wird das Ereigniss nur 1x Pro ds ausgeführt.

Wenn ich das in eine Tabelle speichere muss ich so oder so diesen Wert ausrechnen...(->Lagermenge<-) die die Lagermenge zu speichern ist nicht besonder sinnvol, da die sich jedesmal mehrmals ändert.

PS diese Anwendung wird von mehr als 10 Usern verwendet.

Oder sehe ich das falsch?

jim_raynor 18. Mai 2006 09:30

Re: OnCalcfield 6x ausgelöst bei 2 Datensätzen
 
Was Mojo meinte, war, dass du das Feld ja auch über SQL berechnen lassen kannst:

SQL-Code:
SELECT *, anzahl*groesse as lagermenge from Lager;
Dann kannst du dir das OnComputed sparen.


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