nengl字段是整型数据,用sql求和,怎样把和赋值给 delphi 中的变量呢我下面的语句总是报错“list index out of bounds(0)”
with dm.ydQuery4 do
begin
close;
sql.Clear;
sql.Add('select sum(nengl)from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
with dm.ydQuery4 do
begin
close;
sql.Clear;
sql.Add('select sum(nengl)from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
with dm.ydQuery4 do
begin
close;
sql.Clear;
sql.Add('select sum(nengl) as f1 from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fieldByName('f1').Asinteger));
begin
close;
sql.Clear;
sql.Add('select sum(nengl) as NENG from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
begin
close;
sql.Clear;
sql.Add('select isnull(sum(nengl),0) as NENG from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
begin
close;
sql.Clear;
sql.Add('select sum(nengl) as NENG from nengl8');
open;
end;
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
begin
close;
sql.Clear;
sql.Add('select sum(nengl) as NENG from nengl8');
try
open; showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
except
showmessage('Error.');
end;获取之前也可以测试一下
if not dm.ydQuery4.fields[0].IsNull then
showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger)); end;
SUM是用计算数字的,所以你这个字段类型应该是数字;
如果是用字符类型存储的字段,在SQL语句中会自动隐士转换
但是如果有空的字段,那就完了,SQL中空加什么都等于空