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));

解决方案 »

  1.   

    你的问题我也没试过,但是我想下面的代码能实现你的功能:
    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));
      

  2.   

    with dm.ydQuery4 do
      begin
        close;
        sql.Clear;
        sql.Add('select sum(nengl) as NENG  from nengl8');
        open;
      end;
        showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
      

  3.   

    这样也不行已经试过了   会提示 ydQuery4 :field 'fl'  not found
      

  4.   

    with dm.ydQuery4 do
      begin
        close;
        sql.Clear;
        sql.Add('select isnull(sum(nengl),0) as NENG  from nengl8');
        open;
      end;
        showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
      

  5.   

    同意  ghtghtmalone(malone)  说的
      

  6.   

    这种情况说明你的计算字段中有个为null,只要有个为null,sum函数就算不出来。
      

  7.   

    with dm.ydQuery4 do
      begin
        close;
        sql.Clear;
        sql.Add('select sum(nengl) as NENG  from nengl8');
        open;
      end;
        showmessage(inttostr(dm.ydQuery4.fields[0].Asinteger));
      

  8.   

    with dm.ydQuery4 do
      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;
      

  9.   

    说明你的字段类型不对
    SUM是用计算数字的,所以你这个字段类型应该是数字;
    如果是用字符类型存储的字段,在SQL语句中会自动隐士转换
    但是如果有空的字段,那就完了,SQL中空加什么都等于空