ClientDataSet1的SQL是Select a,b,c From Test_M现在想动态增加一个计算字段e,是integer类型
Test_M的字段b,c也是integer类型,增加计算字段的目的是:e=b*c
在ClientDataSet1CalcFields事件得出e的值。
求助高手帮助。
Test_M的字段b,c也是integer类型,增加计算字段的目的是:e=b*c
在ClientDataSet1CalcFields事件得出e的值。
求助高手帮助。
解决方案 »
- 这个代码可以修改其他程序的listview的节点值,于是乎我想能不能修改一个dbgrid。用 Spy++ 抓了个dbgrid的句柄 测试,未果! 大家伙别忙看看
- 请问如何防止注册表值或者键给删除或者修改?
- 怎样在事件发生时调用另一个事件?
- 问题不难,但是我以前没做过:图像按比例缩放问题
- 为何出错?
- *.rec格式的文件能转化成ACCESS表吗?
- BDE连接oracle出现新问题:vendor initialization failed
- 初学delphi,一个简单得关于字符串切割得问题,3天内结贴
- 怎么拿DBLookupComboBox选定项的其他FIELD的值呢?
- 关于事务的很菜的问题.
- 能否实现以1:1比例显示和打印小图片
- 关于dbgrideh的一个小问题~~
在ClientDataSet1CalcFields中直接计算就行了
var
NewField:TField;
i:integer;
begin
//表中有两字段SName,Birth,现在我们动态生成一个计算字段Age,显示出年龄
NewField:=TStringField.Create(ADOTable);
//创建一个TStringField类型的字段
ADOTable.Close;
for i:=0 to ADOTable.Fields.Count-1 do
ADOTable.Fields[0].Free;//释放所有的静态字段
for i:=0 to ADOTable.FieldDefs.Count-1 do
ADOTable.FieldDefs.Items[i].CreateField(ADOTable);
//根据FieldDefs的字段信息动态的生成静态字段
NewField.Size:=5;
NewField.FieldName:='Age';
NewField.FieldKind:=fkCalculated;
//设置这个这字段为计算字段
NewField.DataSet:=ADOTable;
//把这个字段加到ADOTable上
ADOTable.Open;
end; procedure TForm1.ADOTableCalcFields(DataSet: TDataSet);
var
YY1,YY2,MM,DD:Word;
TmpDate:TDate;
begin
DecodeDate(Date,YY1,MM,DD);
TmpDate:=DataSet.FieldByName('Birth').AsDateTime;
DecodeDate(TmpDate,YY2,MM,DD);
DataSet.FieldByName('Age').AsString:=IntToStr(YY1-YY2)+'岁';
//在OnCalField中显示出年龄
end;