이전에도 CSDN에 많은 분들이 이 질문을 주셨지만 만족스러운 답변을 주신 분은 없는 것 같습니다. 답을 찾는 데 오랜 시간이 걸렸으며 이제 그 답을 여러분과 공유합니다.
PRocedureTForm1.FormCreate(Sender:TObject);
var
NewField:TField;
i:정수;
시작하다
//테이블에는 SName과 Birth라는 두 개의 필드가 있습니다. 이제 계산된 필드인 Age를 생성하여 나이를 표시합니다.
NewField:=TStringField.Create(ADOTable);
//TStringField 유형의 필드 생성
ADOTable.Close;
fori:=0toADOTable.Fields.Count-1do
ADOTable.Fields[0].Free;//모든 정적 필드 해제
fori:=0toADOTable.FieldDefs.Count-1do
ADOTable.FieldDefs.Items[i].CreateField(ADOTable);
//FieldDef의 필드 정보를 기반으로 정적 필드를 동적으로 생성합니다.
NewField.Size:=5;
NewField.FieldName:='나이';
NewField.FieldKind:=fk계산됨;
//이 필드를 계산된 필드로 설정
NewField.DataSet:=ADOTable;
//ADOTable에 이 필드를 추가합니다.
ADOTable.Open;
끝;
절차TForm1.ADOTableCalcFields(DataSet:TDataSet);
var
YY1,YY2,MM,DD:단어;
Tmp날짜:TDate;
시작하다
DecodeDate(날짜,YY1,MM,DD);
TmpDate:=DataSet.FieldByName('생년월').AsDateTime;
DecodeDate(TmpDate,YY2,MM,DD);
DataSet.FieldByName('Age').AsString:=IntToStr(YY1-YY2)+'연도';
//OnCalField에 나이 표시
끝;
위 내용은 ADO를 사용하여 작성한 내용입니다. 처음에는 BDE를 사용하여 작성했는데, 그래도 통과했습니다.
작성자 블로그: http://blog.csdn.net/blazingfire/