หลายคนเคยถามคำถามนี้ใน CSDN มาก่อน แต่ดูเหมือนจะไม่มีใครให้คำตอบที่น่าพอใจ ฉันใช้เวลานานในการค้นหาคำตอบ และตอนนี้ฉันแบ่งปันกับคุณ:
PROcedureTForm1.FormCreate (ผู้ส่ง: TObject);
var
ฟิลด์ใหม่:TField;
ฉัน:จำนวนเต็ม;
เริ่ม
//มีสองฟิลด์ในตาราง SName และ Birth ตอนนี้เราสร้างฟิลด์จากการคำนวณแบบไดนามิกเพื่อแสดงอายุ
NewField:=TStringField.Create(ADOTable);
//สร้างฟิลด์ประเภท TStringField
ADOTable.ปิด;
fori:=0toADOTable.Fields.Count-1do
ADOTable.Fields[0].Free;//ปล่อยฟิลด์คงที่ทั้งหมด
fori:=0toADOTable.FieldDefs.Count-1do
ADOTable.FieldDefs.Items[i].CreateField(ADOTable);
//สร้างฟิลด์คงที่แบบไดนามิกตามข้อมูลฟิลด์ของ FieldDefs
ใหม่Field.Size:=5;
NewField.FieldName:='อายุ';
NewField.FieldKind:=fkคำนวณ;
//ตั้งค่าฟิลด์นี้เป็นฟิลด์จากการคำนวณ
NewField.DataSet:=ADOTable;
//เพิ่มฟิลด์นี้ใน ADOTable
ADOtable.เปิด;
จบ;
ขั้นตอน TForm1.ADOTableCalcFields (ชุดข้อมูล: TDataSet);
var
ปปปปปปปดดด:คำ;
TmpDate:TDate;
เริ่ม
ถอดรหัสวันที่(วันที่,ปปป,ดด,วว);
TmpDate:=DataSet.FieldByName('Birth').AsDateTime;
DecodeDate(TmpDate,YY2,MM,DD);
DataSet.FieldByName('Age').AsString:=IntToStr(YY1-YY2)+'year';
//แสดงอายุใน OnCalField
จบ;
ข้างต้นคือสิ่งที่ฉันเขียนโดยใช้ ADO ตอนแรกผมเขียนโดยใช้ BDE แล้วก็ยังผ่านไป
บล็อกของผู้เขียน: http://blog.csdn.net/blazingfire/