有如下SQL语句:
ADOQUERY1.SQL.ADD('SELECT COUTN(FIELD1) INTO :A FROM TABLE1')
总是不能执行提示 @P1 错误!
为什么呀!急死了!!!!!!!!

解决方案 »

  1.   

    ADOQUERY1.SQL.ADD('SELECT COUTN(FIELD1) as aaa INTO :A FROM TABLE1')看看
      

  2.   

    ADOQUERY1.SQL.ADD('SELECT COUTN(FIELD1) as a  FROM TABLE1')然后用adoquery1.fieldvalue['a']来取得记录数不行吗?
      

  3.   

    into :a 
    什么意思呀??
    为什么要加上这个呢??
      

  4.   

    ADOQUERY1.SQL.ADD('SELECT COUTN(FIELD1) FROM TABLE1')
      

  5.   

    1.SELECT后是不是打错了?应该是COUNT?
    2.最好不要将字段或是表名用变量代替,似乎这样做是不允许的
    3.如果要变动写,就写成处理字符串的行式,处理完之后,再整体加入到查询中
      

  6.   

    据我的经验,表名和字段名是不能用变量代替的,一代替使用就会出错,不过可以将SQL语句作为一个整体来处理,将待使用的SQL语句看作是一个字符串,通过程序将其处理成你所需要的东西,再将其作为一个变量传入QUERY中使用这是一点问题都没有的……
      

  7.   

    INTO :A
    INTO是指将查询结果写入一个表中,INTO后面跟的是表名;
    这里提问者想将其作为一个变量来代替,所以用了:A的这个写法;
    个人感觉这个写法只能用于字段内容或是查询的具体值,不能用于表名或是字段名……
    如有哪位将这个成功的用于了表名或字段名的话,欢迎来议论……
      

  8.   

    既然你用了into :a,那么你就必须给这个参数赋值啊。
      

  9.   

    如果变量是表名还是字段名的话,还是象楼上的诸位大哥说的
    先处理成字符串在送到query中执行
      

  10.   

    在ADO中,表明不能用参数代替的,可以:
       ADOQuery1.SQL.Text:=Format('Select Count(*) As TmpField Into %s From Table1',['TempTable']);
      

  11.   

    上面几位说得不错:“表名、字段名是不能用参数的,必须显式地写出来”
    你的问题,用format把表名直接写进sql语句里就行了
      

  12.   

    我建议你用
    ADOQuery1.Sql.Text := 'SELECT COUTN(FIELD1) FROM TABLE1';
    你在执行Sql.Add之前Sql是否有其它值?
      

  13.   

    adoquery1.sql.clear;
    ADOQUERY1.SQL.ADD('SELECT NewCount=COUTN(FIELD1) FROM TABLE1 GROUP BY FIELD1');
    adoquery1.open;
    ShowMessage(IntToStr(adoquery1.FieldByName('NewCount').asInteger));
      

  14.   

    adoquery1.sql.clear;
    ADOQUERY1.SQL.ADD('SELECT COUTN(FIELD1) as CNT FROM TABLE1');
    adoquery1.open;
    ShowMessage(IntToStr(adoquery1.FieldByName('CNT').asInteger));