现在想实现这样的功能:在DBGrid中填写a列的数据时,当焦点离开a列时,b列由a列按照某种关系计算出来,但是所列出的所有记录的b列计算方法是不同的,也就是说对于b列的计算要分为3种情况。
用计算字段可以实现这样的功能么?
用计算字段可以实现这样的功能么?
解决方案 »
- 一個Tedit編輯框如何跟access數據庫中的一個user表的name字段進行綁定?
- 想转行JAVA的,就进来看看吧,觉得DELPHI工资低了的就进来看看吧。
- FastReport分栏小问题:系统分栏是记录从左往右排列,如何整成从上到下排列?
- 朋友们看看是不是我太执著了!
- 请问如何用DBComboBox1动态的添加数据表的字段?
- ord()函数的用法?
- 文件相對路徑的問題?怎樣實現文件的相對路徑?
- delphi的exe文件能反编译吗?
- delph+SQL Server2000,增加入库单如何实现库存的实时更新?
- CSDN怎么越改越差啦?怎么老是刷不出来???
- 请教trunc()与Round()的区别!
- 自認為很難的問題,各位高手幫我想想!
第N+1到第N+n条记录采用其他的计算方法?
手动计算就没意义了吧?
procedure TForm1.ADOQuery1aChange(Sender: TField);
begin
if 条件1 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.1
else if 条件2 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.2
else if 条件3 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.3
end;
procedure TForm1.ADOQuery1aChange(Sender: TField);
begin
if Sender.DataSet.RecNo >0 and Sender.DataSet.RecNo <1000 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.1
else if Sender.DataSet.RecNo >=1000 and Sender.DataSet.RecNo <2000 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.2
else if Sender.DataSet.RecNo >=2000 000 then
Sender.DataSet.FieldByName('b').AsFloat := Sender.AsFloat * 1.3
end;