主题:高手帮忙ADOquery中的SQL语句???
booksword
[专家分:210] 发布于 2006-04-19 16:58:00
请问一下,我在调试的时候在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个回复)
沙发
gongchengh [专家分:390] 发布于 2006-04-20 15:13:00
应该是这样写的
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附近有问题的了.
板凳
jianfeihua [专家分:780] 发布于 2006-04-20 18:25:00
用 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 楼
guo888go2005 [专家分:150] 发布于 2006-04-21 17:34:00
你把SQL语句先给一个变量,然后再adoquery1.add(变量)
4 楼
booksword [专家分:210] 发布于 2006-04-24 16:14:00
楼上的给个例子.谢谢!
5 楼
chenzhou851025 [专家分:300] 发布于 2006-04-26 10:16:00
3楼的意思应该是adoquery1.sql.add('select * from zysfzl where left=:left');
adoquery1.Parameters.ParamByName('left').Value:=cfbh;
我来回复