لقد طرح العديد من الأشخاص هذا السؤال على CSDN من قبل، ولكن يبدو أن لا أحد قدم إجابة مرضية. لقد استغرق مني وقتا طويلا للعثور على الجواب، والآن أشارككم إياه:
PROcedureTForm1.FormCreate(Sender:TObject);
فار
NewField:TField;
أنا: عدد صحيح؛
يبدأ
// يوجد حقلان في الجدول، SName وBirth. نقوم الآن بإنشاء حقل محسوب العمر لعرض العمر ديناميكيًا.
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);
// إنشاء حقول ثابتة ديناميكيًا بناءً على المعلومات الميدانية الخاصة بـ FieldDefs
NewField.Size:=5;
NewField.FieldName:='العمر';
NewField.FieldKind:=fkCalculated;
// قم بتعيين هذا الحقل كحقل محسوب
NewField.DataSet:=ADOTable;
// أضف هذا الحقل إلى ADOTable
ADOtable.Open;
نهاية؛
الإجراءTForm1.ADOTableCalcFields(DataSet:TDataSet);
فار
YY1، YY2، مم، د: كلمة؛
تمبدات:تدات؛
يبدأ
DecodeDate(Date,YY1,MM,DD);
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/