关于Calculated字段的计算问题。(50分)

  • 主题发起人 主题发起人 iCANK
  • 开始时间 开始时间
I

iCANK

Unregistered / Unconfirmed
GUEST, unregistred user!
举个具体的例子,要实现下面的功能:
数据库中有两个字段,id,n1,再建立Calculated字段,字段名result,

记录id n1 result
1 0.30 0.23 result的值=(0.30+0.23+0.17)/3,并存入三个数中第一个数的那一行。
2 0.23
3 0.17
4 0.30 0.25
5 0.26
6 0.20
……

procedure TForm1.Table1resultGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
这个函数应该怎么写?
或者,不用Calculated字段,用别的方法怎么实现?
对了,result值的计算过程要用别的函数调用,而不是直接写在GetText函数里面。

各位高手帮忙!谢谢!:)
 
用Calculated字段比较困难,用临时表比较简单
 
那临时表该怎么用呢?
能不能给你例子?
 
你的临时表比原表多个result字段,
把原表的记录复制进去临时表
然后计算出每个result值写进临时表
看起来好象麻烦而且技术“不高深”但是实现简单啊
 
那临时表是建立在内存里还是建立在数据库中?
还有,我最想知道的是,怎么样得到下面两行的数据,然后返回去把结果写到第一行。
 
〉那临时表是建立在内存里还是建立在数据库中?
随便你。
如果在内存中,那么本地计算快一点
如果在数据库,那么插入原表数据快,比如 insert into 临时表 select id,n1,null from 原表

>怎么样得到下面两行的数据,然后返回去把结果写到第一行
你可以先 dataset.Last 到最后一行,然后dataset.Prev往上走嘛
或者往下走,计算完了再往回走,写入。只要记录不多,象这样的落后的手法也不费时间
 
>只要记录不多,象这样的落后的手法也不费时间
数据库采用什么?类是的情况我用使用过临时表的办法,发现对Paradox数据表数据量大
时速度较慢。
不知道能否对id字段做些限制,比如从1顺序增加不间断,在oncalculated时通过
id是否=n*3+1给result福值(空或(0.30+0.23+0.17)/3).
我也去试一试看
 
不能在oncalculated计算,因为oncalculated不是按顺序触发的,也不是连续触发的,
比如在DBGrid你把记录拉到最后,他只会触发要显示的几条记录
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
926
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
939
DelphiTeacher的专栏
D
后退
顶部