Announcement

Collapse
No announcement yet.

CalcFields

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CalcFields

    Hallo zusammen,

    ich habe noch nie mit CalcFields gearbeitet und komme da irgendwie nicht weiter. Ich habe folgende Problemstellung:

    1. Es sollen zur Laufzeit CalcFields erzeugt werden.
    2. Für die CalcFields existiert keine Repräsentation in der Datenbank, d.h. die Felder sollen nur im TDataset-Objekt vorhanden sein, nicht aber in der Datenbank gespeichert werden.

    Wie kann ich CalcFields zur Laufzeit erzeugen? Dieser Code funktioniert leider nicht:

    <PRE>
    Field := TStringField.Create(nil);
    Field.FieldKind := fkInternalCalc; // oder auch fkCalculated
    Field.FieldName := 'TEST';
    Field.Size := 255;
    Field.DataSet := MeinDataset;
    </PRE>

    Mit fkCalculated wird das Feld nicht angefügt und mit fkInternalCalc laufe ich auf den Fehler, dass "Test" nicht gefunden wurde. Was mache ich hier grundsätzlich falsch?

    Danke für jeden Hinweis.

  • #2
    Hi Bulvaye,
    vielleicht hilft dir ja folgendes Codefragment:

    <pre>
    <b>type</b>
    TForm1 = <b>class</b>(TForm)
    Table1: TTable;
    ...
    <b>private</b>
    clcField: TStringField;
    <b>end;</b>
    </pre><pre>
    <b>var</b>
    Form1: TForm1;
    </pre><pre>
    <b>implementation</b>
    </pre><pre>
    {$R *.DFM}
    </pre><pre>
    <b>procedure</b> TForm1.FormCreate(Sender: TObject);
    <b>begin</b>
    clcField := TStringField.Create(Self);
    clcField.FieldKind := fkCalculated;
    clcField.FieldName := 'TEST';
    clcField.Size := 255;
    clcField.DataSet := table1;
    </pre><pre>
    Table1.Open;
    <b>end;</b>
    </pre><pre>
    <b>procedure</b> TForm1.Table1CalcFields(DataSet: TDataSet);
    <b>begin</b>
    clcField.AsString := 'kalkulierter Wert';
    <b>end;</b>
    </pre><pre>
    <b>procedure</b> TForm1.FormDestroy(Sender: TObject);
    <b>begin</b>
    Table1.close;
    FreeAndNil(clcField);
    <b>end;</b>

    </pre>

    Viel Erfolg
    Oll

    Comment

    Working...
    X