我想在delphi里查询一个表里的ID字段的最大值 并把它赋给一个变量,该怎么写呢?

解决方案 »

  1.   

    Sql.Text := 'select top 1 id from tablename order by id desc  ' i := FieldByName('ID').AsInteger ;
      

  2.   

    AdoQuery1.Close();
    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('select Max(ID) from tablename');
    AdoQuery1.Open();
    i:=AdoQuery1.FieldByName('ID').AsInteger;
      

  3.   

    不行啊 为什么老提示找不到'ID'这个字段啊  SQL语句在sql里运行是正确的 可是赋值时就找不到字段 为什么呢
      

  4.   

    try:
      
      select Max([ID]) from tablename  建议不要使用系统保留的关键字(例如“ID”)作为字段的名称
      

  5.   

    搞定了 原来是因为我执行SQL语句用的是Query.ExecSQL(),不返回值,所以找不到,
    用Query.Open()就行了。但是问题又来了,我用'select top 1 id from tablename order by id desc  '就可以返回赋值,用'select Max(ID) from tablename'在赋值时就说找不到'ID'这个字段,语句在SQL里运行都是正确的,而且我也没用系统保留的关键字(例如“ID”)作为字段的名称啊。
      

  6.   

    为什么用'select top 1 id from tablename order by id desc  '得到的结果是对的,显示的也是对应的查询的字段名而用'select Max(ID) from tablename'得到的结果是对的而字段名则是Expr1,估计问题是出在这里谁能告诉我是怎么回事呢 谢谢
      

  7.   

    这样写就对了:
    在Query中的语句这样写 select max(ID) as maxid form tablename
    然后付值时这样写:变量:=query.fieldbyname('maxid').asinteger;