我的代码如下: 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
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;這樣呢?
不行啊,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; 就可以正确执行,为什么呢?搞了一上午还没有解决。
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;
在語句中N必須先指定個確切值,而不能說 :N 然後傳個10 進去,這是不充許的.
AdoQuery1.Parameters.ParamByName('field').Value:=xxx;//xxx是string型
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
改成
objrs.Parameters.ParamByName('curcde').asString:='001';
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;這樣呢?
objrs.Prepared:=true;
放到
objrs.Parameters.ParamByName('curcde').value:='001';
后面
我联的是oracle数据库。
如果我改成
objrs.sql.Add(' select recdat,bscode from actbah ' );
objrs.sql.append(' where curcde='''001''' ');
objrs.sql.Append(' group by recdat,bscode ') ;
objrs.open;
就可以正确执行,为什么呢?搞了一上午还没有解决。
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;