delphi ADO+access 怎样找到指定条记录(50分)

  • 主题发起人 主题发起人 wxm337766
  • 开始时间 开始时间
W

wxm337766

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi ADO+access 怎样找到指定条记录?
procedure TAIMeasure.GetAvg();
var
ADO:TADOQuery;
i:integer;
Sum,Avg:real;
begin
try
ADO:=TADOQuery.create(self);
ADO.Connection:=Datamodule1.ADOConnection1;
ADO.close;
ADo.sql.clear;
ADO.sql.add('select ch0 from Save'); /////////////明天用升序ASC试一试!~
ADO.open;
ADO.First;

for i:=1 to ADO.RecordCount do
begin
Sum:=Sum+strtofloat(ADO.Fields.AsString);//这里
end;
Avg:=Sum/ADO.RecordCount;
edit51.Text:=floattostr(Avg);
finally
ADO.free;
end;
 
没看明白你的意思,
Sum:=Sum+strtofloat(ADO.Fields.AsString);//这里
这里明显有问题
局部变量应该需要初始化.
with not ADO.EOF do
begin
Sum := Sum + ADO.FieldByName('需要汇总的字段').AsFloat;
ADO.NEXT;
end;
如果是汇总,可以用SQL语句
SELECT SUM(ch0),Avg(ch0) FROM Save
可以达到效果,不用在去循环求平均值,和升降序没有关系
 
for i:=1 to ADO.RecordCount do
begin
Sum:=Sum+strtofloat(ADO.Fields.AsString);//这里
end;
Avg:=Sum/ADO.RecordCount;
edit51.Text:=floattostr(Avg);
finally
ADO.free;
end;
对这段可以用agge...字段,在ado的field editor的new field选择建立,没有必要用代码实现,这样效率不高
就算用代码
Sum:=Sum+strtofloat(ADO.Fields.AsString);//这里
上面可以改成Sum:=Sum+ADO.Fields.AsFloat
 
to saith:
SELECT SUM(ch0),Avg(ch0) FROM Save 必须数据是整型的,我想循环求一列以文本存储的Float数据的平均值,现在遇到的问题是ADO怎样表示第一条记录、第二条记录.........循环加起来求平均,思路就这样
 

Select Sum(Cast(cho As numeric(18,4))),
Avg(Cast(cho As numeric(18,4))) From Save

ADO循环应该是这样
ADO.First;
while not ADO.Eof do
begin
//DoSomething
ADO.Next;
end
这样就可以从第一个记录取数据一直到最后一条

你的这个
for i:=1 to ADO.RecordCount do
begin
Sum:=Sum+strtofloat(ADO.Fields.AsString);//这里
end;
严重有问题
 
to saith:
问题已经解决了,虽然不是你的方法,但受到你的启示,ThanKs
 
access 也有数据类型转换函数

cast 是 sql 中的函数
 
后退
顶部