回 帖 发 新 帖 刷新版面

主题:高手帮忙ADOquery中的SQL语句???

请问一下,我在调试的时候在adoquery中SQL中加入
select left(cfbh,8) as cfbh,sum(je) from zysfzl where rq='2006-02-01'
group by left(cfbh,8)
说明:cfbh的值c2100032-01   je的值是单价,就是说c2100032这张单子在,zysfzl表中有多条明细。01、02、03、04....我要把每一天各张单子的总数加出来。
我在调试时能通过可以按我的要求显示数据在grid中。
可是到程序中就提示8附近语法错,就是selcet后面的那个,是不是query中不能分组呀
请问我该怎么写。我的条件rq是由edit1中取出。

回复列表 (共5个回复)

沙发

应该是这样写的
 adoquery1.SQL.Add('select');
 adoquery1.SQL.Add(left(cfbh,8));
 adoquery1.SQL.Add('as cfbh,sum(je) from zysfzl where rq=');
 adoquery1.SQL.Add(QuotedStr(2006-02-01));
 adoquery1.SQL.Add('group by');
 adoquery1.SQL.Add(left(cfbh,8);
 不一样的sql是不能写一起的,尤其是和  过程  有关的量更不行.如果按照你那样写,就成了select 的是 left(cfbh,8) 而不是你要的结果  c2100032   而这个select 当然是在8附近有问题的了.

板凳

用 AdoDataSet简单
With AdoDataSet do
begin
  Close;
  CommandText:='select left(cfbh,8) as cfbh,sum(je) from zysfzl ';
  CommandText:=CommandText+ 'where rq=''2006-02-01''group by left(cfbh,8)';
  open;
end;

3 楼

你把SQL语句先给一个变量,然后再adoquery1.add(变量)

4 楼

楼上的给个例子.谢谢!

5 楼

3楼的意思应该是adoquery1.sql.add('select * from zysfzl where left=:left');
               adoquery1.Parameters.ParamByName('left').Value:=cfbh;

我来回复

您尚未登录,请登录后再回复。点此登录或注册