用"Query1.Open();"或"Query1.Execsql();"

解决方案 »

  1.   

    用ACTIVE:=TRUE比较好,不能用EXECSQL,因不返回记录集!呵呵!
    ACTIVE:=TRUE可以返回错误信息!
     try
      QUery1.Active:=True;
     except
      ShowMessage('Error');
     end;
    呵呵!
      

  2.   

    Query1.SQL.text:='Select MaxName=Max('编号') From Table_Name ';
    query1.open;
    xx:=query1.fieldbyname('MaxName').asinteger
      

  3.   

    QUERY1.OPEN    =   QUERY2.ACTIVE=TRUE
          .CLOSE   =                =FALSEQUERY1.EXECSQL ====如果你更新了SQL属性,必须重新执行SQL语句,然后打开数据集取数据另外,对于你的问题,你可以用QUERY1.FIELDS(0).ASSTRING/ASINTEGER取到,因为你用了
    MAX函数,可能列名变化,当然,你可以写 Select Max('编号') NEWNAME From Table_Name
    然后用  query1.fieldbyname('NEWNAME').asinteger 
      

  4.   

    一般来说要返回结果的用OPEN,否则用EXECSQL;另外,你的问题SQL要这样写
    Select Max('编号') as newname From Table_Name这样获取结果
    fieldbyanme('newname').asstring;
      

  5.   

    query1.active:=true 和 query1.open等效,都用于返回数据集(比如select)
    而query1.execsql不返回数据集,一般是对数据库进行操作(如delete,create,insert,update等等)
    Query1.SQL.text:='Select Max(''编号'') From Table_Name ';
    其中编号前后要用两个单引号表示一个单引号
      

  6.   

    最好用"Query1.Open();"或"Query1.Execsql(); 取值就用Query1.Fields.fields[0].AsString; 
      

  7.   

    Query1.SQL.text:='Select MaxName=Max('编号') From Table_Name ';
    query1.open;
    if not(Query1.Eof and Query1.Bof) then begin
      First;
      xx:=query1.fieldbyname('MaxName').asinteger;
    end;
      

  8.   

    在store procedure 中(select sum() ***)本身就是一个结果不信就试试
      

  9.   


     query1.close;
     query1.sql.clear;
     query1.sql.text := 'Select MaxName=Max('编号') From Table_Name ';
     query1.open;
     
     v_value := query1.fieldbyname('MaxName').asinteger;你去试试看吧