名簿DB-計算項目

年齢を入力する項目「birth」から、値を取り出して、年齢を計算させてみました。
すぐに忘れる弱頭脳なので、ここも忘備録を書いておきます。

前回、値の参照をやってみましたが、同じような方法で計算した結果を表示させることができます。
「ABSTable1」を右クリックして、「項目の設定」-「項目の新規作成」を選択します。
次のような「AGE」項目を追加しました。ここで「計算項目」にチェックをします。
address7

address8

上画像のDBEdit(歳の前)「DataField」プロパティに、項目名「AGE」を入れます。(選択)

次はいよいよプログラムを書きます。数行ですけど。
ABSTable1を選択し、OnCalcFieldsイベントをダブルクリックします。
address9

イベントには次のようなプログラムを書きます。
日付を分解してくれるという便利な関数があるみたいです。
便利ですねぇ・・・Delphi好きになりそうです(^^;

//計算フィールドの実行
procedure TMainForm.ABSTable1CalcFields(DataSet: TDataSet);
var
  theDateTime: TDateTime; //日付型変数
  theYear, theMonth, theDate: Word;//ワード型変数
  theNowYear: Word;
begin
  //誕生日フィールドの値を取得
  theDateTime := ABSTable1.FieldByName('birth').AsDateTime;
  //指定された日付を年・月・日に分解する関数
  DecodeDate(theDateTime, theYear, theMonth, theDate);
  //今日の日付を分解
  DecodeDate(Now, theNowYear, theMonth, theDate);
  //年齢を計算し、計算項目に結果を代入
  ABSTable1.FieldByName('AGE').AsInteger := theNowYear - theYear;
end;

実行結果

address10

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です