对数据库的字段求和 ,或求最大数(100分)

  • 主题发起人 主题发起人 sunqi
  • 开始时间 开始时间
S

sunqi

Unregistered / Unconfirmed
GUEST, unregistred user!
不使用SQL语言,对数据库字段求和,DELPHI 是否有该方法 ,
或哪里有该功能的控件
 
没有现存的,反正也简单,自己写一个吧.
 
到http://shrw.chn.net去下载我的超级报表控件看看吧。
 
用TQRExpr能办到
 
呵呵, 这些都是用了遍历然后得到的, 执行效率太第了:-(
while not table1.eof do
begin
i:=i+table1.fieldbyname('sum_field').asinteger;
table1.next;
end;
 
除了TQRExpr,delphi中无直接的方法.
为什么不用SQL呢?
 

用遍历吧:
table1.open;
table1.first;
psum:=0;
while not table1.eof do
begin
psum:=psum+table1.fieldbyname('ppsum').asinteger;
table1.next;
end;


 
各位都是使用数据库遍历和SQL 这种方法效率太低 有没有效率高的方法或控件
因为我是在数据录入中使用,所以不能用TQPEXPR 。
 
各位都是使用数据库遍历,效率太低,而且使用不方便,有没有控件使用
我是在输入中使用,不能使用TQPEXPR
 
f1book有该功能,不知道你的表有多大,录入界面怎样安排,所以,你可以自己
试一试,我曾用过f1book作过计算最大、最小、平均值的计算,它可以完成一些
简单的计算
设置AutoRecalc:=true;
用numberrc[ nRow, nCol]写入数据,在适当的网格里给出计算公式
FormulaRC [ nRow, nCol]:=‘公式’,和excel一样,你可以试一试。
注意:写入数据时不能用textrc[ nRow, nCol],否则公式不会自动计算。
 
录入?另外放个QUERY在后台统计,前台用你的TABLE不得了?
 
这个问题我第一眼看时,还是0。怎奈,键好答案发送时网却断了,转眼有那么多的
的回答,迟了一步。我的方法和以上诸位兄弟一样。
问主在分配时还得考虑一下这种特殊情况!
 
可否在注册表中或就在本数据库中加一些数据指示字段最大值和字段和等,不过在删除
记录时还是得遍历数据.太笨!
 
CJ的方法就够了.
 
1. 如果录入是排他的, 或者说同一时刻最多只可能有一个录入界面在
工作, 且录入界面有源代码, 那么简单地在这个界面中设置一些临
时变量, 将要统计的字段的值在插入到数据库后进行本地计算, (
加减乘除,比较大小等)自然可以保证和数据库中一致,而且效率高.

2. 如果录入界面不是排他的, 但有源代码, 则可以建立一个线程, 定时
地向数据库发送一个SQL语句进行计算, 或者调用数据库端的存储过程.

3. 其他情况, 自己编个程序, 周期性地查询数据库就是了, 反正改不了
录入程序. ^_^
 
"如果录入界面不是排他的"
那么没有什么办法可以准确及时的得到当前的求和,只能是一个准确程度.
 
Tclientdata可以完成统计
 
多人接受答案了。
 

Similar threads

回复
0
查看
978
不得闲
回复
0
查看
863
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部