Banyak orang yang menanyakan pertanyaan ini di CSDN sebelumnya, namun sepertinya belum ada yang memberikan jawaban yang memuaskan. Butuh waktu lama bagi saya untuk menemukan jawabannya, dan sekarang saya membagikannya kepada Anda:
PROcedureTForm1.FormCreate(Pengirim:TObject);
var
Bidang Baru: Bidang;
saya: bilangan bulat;
mulai
//Ada dua field dalam tabel, SName dan Birth. Sekarang kita secara dinamis membuat field terhitung Age untuk menampilkan usia.
Bidang Baru:=TStringField.Buat(ADOTable);
//Buat bidang bertipe TStringField
ADOTable.Tutup;
fori:=0toADOTable.Fields.Count-1do
ADOTable.Fields[0].Free;//Lepaskan semua kolom statis
fori:=0toADOTable.FieldDefs.Count-1do
ADOTable.FieldDefs.Item[i].CreateField(ADOTable);
//Menghasilkan bidang statis secara dinamis berdasarkan informasi bidang FieldDefs
Bidang Baru.Ukuran:=5;
NewField.FieldName:='Umur';
NewField.FieldKind:=fkCalculated;
//Tetapkan bidang ini sebagai bidang terhitung
NewField.DataSet:=ADOTable;
//Tambahkan bidang ini ke ADOTable
ADOTable.Terbuka;
akhir;
procedureTForm1.ADOTableCalcFields(DataSet:TDataSet);
var
YY1,YY2,MM,DD:Kata;
Tanggal Tmp:Tanggal T;
mulai
DecodeDate(Tanggal,YY1,MM,DD);
TmpDate:=DataSet.FieldByName('Kelahiran').AsDateTime;
DecodeDate(TmpDate,YY2,MM,DD);
DataSet.FieldByName('Umur').AsString:=IntToStr(YY1-YY2)+'tahun';
//Menampilkan usia di OnCalField
akhir;
Di atas adalah apa yang saya tulis menggunakan ADO. Awalnya saya menulisnya menggunakan BDE, dan masih lolos.
Blog Penulis: http://blog.csdn.net/blazingfire/