先上代码
a:=DateToStr(now); t := 'select 强度 from AWS_ELEC_DATA where 时间 LIKE'''+a+'%''';
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.add(t);
Open; while not ADOQuery1.Eof do
begin
p:=FieldByname('强度').AsString;
q:=strtofloat(p);
if a>q then
begin
a:=a
else a:=q;
end;
adoquery1.next;
end; a:=FieldByName('电场强度').AsString;
Form2.edit1.text:=a;
end;代码问题很大,我想实现的功能是在ADOQUERY中读取了数据库一个特点时间的 所有强度的数据 然后求这些数据的最大最小和平均。
由于所给的数据库是VARCHAR。
所以无法使用MAX MIN AVG,必须强制转化。
那位大牛可以帮助将红色字体的代码修改一下,使其可以显示强度的最大值?
非常感谢。
a:=DateToStr(now); t := 'select 强度 from AWS_ELEC_DATA where 时间 LIKE'''+a+'%''';
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.add(t);
Open; while not ADOQuery1.Eof do
begin
p:=FieldByname('强度').AsString;
q:=strtofloat(p);
if a>q then
begin
a:=a
else a:=q;
end;
adoquery1.next;
end; a:=FieldByName('电场强度').AsString;
Form2.edit1.text:=a;
end;代码问题很大,我想实现的功能是在ADOQUERY中读取了数据库一个特点时间的 所有强度的数据 然后求这些数据的最大最小和平均。
由于所给的数据库是VARCHAR。
所以无法使用MAX MIN AVG,必须强制转化。
那位大牛可以帮助将红色字体的代码修改一下,使其可以显示强度的最大值?
非常感谢。
MaxValue = 0;
while not ADOQuery1.Eof do
begin
p:=FieldByname('强度').AsString;
q:=strtofloat(p);
if q > MaxValue then
begin
MaxValue = q;
end;
next;
end;
修改下少个括号:
select max(cast(强度 as float)) from AWS_ELEC_DATA where 时间 LIKE'''+a+'%'''
那也很热心的啊 真感谢你了呢
这下确实没有语法错误了
运行时候会显示 field'强度' not found
是不是要将这句a:=FieldByName('电场强度').AsString;
修改下?
例如
select a from A
FieldByName('a').asstring;//这样是没错的
如果
select a as 强度 from A
FieldByName('a').asstring;//这样错误
FieldByName('强度').asstring;//这样是没错的
是的呀 那我这句没有问题啊 我上面是
select max(avg或是min)(cast 强度 as float(或是double看你的情况)) from AWS_ELEC_DATA where 时间 LIKE'''+a+'%'''
下面是
a:=FieldByName('电场强度').AsString;
Form2.edit1.text:=a;
end;可是怎么会显示not found呢?
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.add(t);
Open; b:=FieldByName('强度').AsString;
Form2.edit1.text:=b;
end;
麻烦看一下,之前b定义为string
代码目的为了在EDIT1上显示 最大的强度。
可是运行起来是field'强度'not found
你可以这样:
t := 'select max(cast(强度 as float)) as maxpower from AWS_ELEC_DATA where 电场时间 LIKE''' a '%''';
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.add(t);
Open;
b:=FieldByName('maxpower').AsString;