Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Felder vom Typ "fkData" im OnCalcFields-Event füllen/ändern (https://www.delphipraxis.net/18730-felder-vom-typ-fkdata-im-oncalcfields-event-fuellen-aendern.html)

Orakel-von-Delphi 23. Mär 2004 22:53


Felder vom Typ "fkData" im OnCalcFields-Event füll
 
Hallo !

Kennt jemand eine Möglichkeit im OnCalcFields-Event Datenfelder vom Typ "fkData" zu füllen oder zu verändern ? TQuery.Edit kann schießlich an dieser Stelle nicht verwendet werden.
Ein Type-Cast bringt ebenfalls nicht viel, da man an die eigentlich wichtigen Members der Klasse TField nicht herankommt, da diese "private" sind.

Schon mal vielen Dank !

shmia 24. Mär 2004 07:58

Re: Felder vom Typ "fkData" im OnCalcFields-Event
 
Das Event OnCalcFields wird ausschlieslich dazu benutzt berechnete Felder
zu bestücken.
Delphi-Quellcode:
// hier ein Beispiel
procedure TFrmAbholung.QryPaketCalcFields(DataSet: TDataSet);
var
   l,b, h : Double;
begin
   l := DataSet.fieldbyname('Laenge').AsFloat * 10.0;
   b := DataSet.fieldbyname('Breite').AsFloat * 10.0;
   h := DataSet.fieldbyname('Hoehe').AsFloat * 10.0;

   // berechendes Feld mit Daten befüllen
   DataSet['Abmasse'] := Format('%3.0f x %3.0f x %3.0f', [l,b,h]);
end;
Um Datenfelder zu bestücken sind die Events
  • AfterEdit
  • AfterInsert
  • BeforePost
  • BeforeCancel (nur begrenzt sinnvoll)
zu verwenden. Denn nur innerhalb diesen Events befindet sich die Datenmenge
im Zustand dsEdit oder dsInsert.

Orakel-von-Delphi 24. Mär 2004 08:19

Schon klar !
 
Das ist mir natürlich schon lange klar, aber ich suche nach einer Möglichkeit, entweder eine Spalte vom Typ fkCalculated editierbar zu machen (vgl. http://www.delphipraxis.net/internal...ect.php?t=7780) oder eine fkData-Spalte während der Grid aufgebaut wird zu manipulieren.

shmia 24. Mär 2004 09:22

Re: Felder vom Typ "fkData" im OnCalcFields-Event
 
Beides ist nicht möglich!
Du kannst ein berechnetes Feld nicht editieren, da es nur aus
physikalisch vorhanden Feldern gebildet wird.
Für den Benutzer ist es Read-Only.

Andererseits darfst du physikalische Felder (ftData) beim Blättern im Grid
nicht einfach ändern.

Du benötigst ein Lookupfield (fkLookup).
Damit brauchst du die Pickuplist nicht selbst aufbauen, sondern
die Pickupliste wird aus einer 2. Datenmenge gebildet.

Angenommen du hast Tabelle A mit einem Fremdschlüssel (IdMaschine).

Tabelle B sieht so aus:

IdMaschine Bezeichnung
========================
10 Bohrhammer
12 Schlagbohrmaschine
15 .....................

Mit dem Lookup-Feld kann der Benutzer bequem aus den Bezeichnungen
auswählen; im Hintergrund wird in Tabelle A des Feld IdMaschine entsprechend geändert.


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