为什么我直接写一个group by 的语句TADOQUERY可以正确执行,
但我在语句中用了参数的方式后总是报错,可能是参数没有传递过去,因为我将参数去掉或直接写参数值时可以正确执行。
我的参数是一个string类型的,怎样才能正确传递?

解决方案 »

  1.   

    先生成一個語句,然後執行。有此SQL是不充許傳遞參數的,如Select top N * from Table
    在語句中N必須先指定個確切值,而不能說 :N 然後傳個10 進去,這是不充許的.
      

  2.   

    传参数好像是要
    AdoQuery1.Parameters.ParamByName('field').Value:=xxx;//xxx是string型
      

  3.   

    我的代码如下:  
      objrs.SQL.Clear;
        objrs.sql.Add(' select recdat,bscode from actbah ' );
        objrs.sql.append(' where curcde=:curcde');
        objrs.sql.Append(' group by recdat,bscode ') ;
        objrs.Prepared:=true;
        objrs.Parameters.ParamByName('curcde').value:='001';
        objrs.open;
    执行后提示:
    not a group by expression
      

  4.   

    objrs.Parameters.ParamByName('curcde').value:='001';
    改成
    objrs.Parameters.ParamByName('curcde').asString:='001';
      

  5.   

    objrs.SQL.Clear;
        objrs.sql.Add(' select recdat,bscode from actbah ' );
        objrs.sql.Add(' where curcde=:curcde');
        objrs.sql.Add(' group by recdat,bscode ') ;
        objrs.ParamByName('curcde').AsString:='001';
        objrs.open;這樣呢?
      

  6.   


    objrs.Prepared:=true;
    放到
    objrs.Parameters.ParamByName('curcde').value:='001';
    后面
      

  7.   

    Prepared;方法應該寫在傳遞參數之後吧。
      

  8.   

    不行啊,objrs是一个tadoquery的对象,不能用asstring。
    我联的是oracle数据库。
    如果我改成
    objrs.sql.Add(' select recdat,bscode from actbah ' );
        objrs.sql.append(' where curcde='''001''' ');
        objrs.sql.Append(' group by recdat,bscode ') ;
         objrs.open;
    就可以正确执行,为什么呢?搞了一上午还没有解决。
      

  9.   

    Str:=frmFKQD.Edit1.Text +datetostr(frmFKQD.DTP.DateTime)+frmFKQD.Edit1.Text;
        Str1:=frmFKQD.Edit1.Text+datetostr(frmFKQD.DTP.DateTime-7+frmFKQD.Edit1.Text;
       with frmFKQD.ADOQuery1 do begin
                Close;
                SQL.Clear;
                SQL.Add('select distinct kh_dm,kh_mc from pv_yfzk');
                SQL.Add('where (rq+ht_zq=');
                SQL.Add(Str);
                SQL.Add('or fk_rq=');
                SQl.Add(Str1);
                SQL.Add(') and fk_ye<>0 order by kh_dm');
                Open;
        end;