先日はありがとうござました。
今回、DBGERIDで計算した値を後ろのフィールドにリアルタイムに代入したくおもいまして探してみた所、CalcFieldsを使うようなことが描いてあり下記のようにしてみたんですが
------------------------------------------------------
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
showmessage('きてます。');
dataset.FieldByName('total').Asinteger :=
dataset.FieldByName('point').AsInteger+dataset.FieldByName('point2').AsInteger;
end;
procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
begin
with Table1 do
begin
OnCalcFields := Table1CalcFields;
DisableControls;
while (Eof = false) do
Next;
First;
EnableControls;
end;
end;
--------------------------------------------------------------
どうやら、Table1CalcFields のほうには命令がとどいていないようで
反映されません
別の方法でもOKですので
A B C
---------------------------
1 kuruma 10 30 40
2 densya 10 11 21
3 aruki 2 3 5
----------------------------
のようにA+Bのフィールドの合計をCに出して
表示させる方法はないでしょうか?
OnCalcFieldsはTDataSetのイベントです。
使い方は、まずTDataSetにTDbGridで表示するFieldを計算項目として追加します。
たとえばTQueryを使った場合は、Query1右クリックから、[項目の設定]
をだし、項目エディターでさらに右クリックから[項目の新規追加]を選び、
Fieldの名前を設定して、Field型等を設定して、計算項目をクリックします。
これでOKすると、TDataSetに計算項目が追加されます。この後、TDataSetのOnCalcFieldsイベントを作成して、この中で、上記の計算を書きます。この計算は、計算項目しか操作できません。普通のDataFieldはEdit等で値を変更しなければいけません。OnCalcFieldsイベントは、そのレコードが呼ばれたときに発生します。この場合は、DbGridにそのレコードが表示されるときに発生します。
DbGridで計算する場合は、直接TDataSetに対して値を書き換えないといけません。
HOtaさん、詳しい説明ありがとうございました。
自力だと、絶対にたどり着けないところでした(^_^;)
こんな設定の仕方があったんですね
安心して年をこせます。
どうもお世話になりました!!
あつ、解決マーク付け忘れていました。
おそくなりましたが(^_^;)
ピッ!!
ツイート | ![]() |