AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Felder vom Typ "fkData" im OnCalcFields-Event füllen/ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Felder vom Typ "fkData" im OnCalcFields-Event füllen/ändern

Ein Thema von Orakel-von-Delphi · begonnen am 23. Mär 2004 · letzter Beitrag vom 24. Mär 2004
Antwort Antwort
Benutzerbild von Orakel-von-Delphi
Orakel-von-Delphi

Registriert seit: 27. Jan 2004
Ort: Mittelhessen
45 Beiträge
 
Delphi 2007 Professional
 
#1

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

  Alt 23. Mär 2004, 23:53
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 !
Michael
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Felder vom Typ "fkData" im OnCalcFields-Event

  Alt 24. Mär 2004, 08:58
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.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Orakel-von-Delphi
Orakel-von-Delphi

Registriert seit: 27. Jan 2004
Ort: Mittelhessen
45 Beiträge
 
Delphi 2007 Professional
 
#3

Schon klar !

  Alt 24. Mär 2004, 09:19
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.
Michael
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Felder vom Typ "fkData" im OnCalcFields-Event

  Alt 24. Mär 2004, 10:22
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.
Andreas
  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 01:58 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