请大家帮忙挑错!

woaiwd 2008-02-22 09:56:33
下面的代码在查询分析器里运行没有问题:

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select');
SQL.Add('b.月份,');
SQL.Add('b.编码,');
SQL.Add('数量 =(select sum(数量) from test where 月份=b.月份');
SQL.Add('and 编码 like b.编码+''%'')');
SQL.Add('from');
SQL.Add('(select 月份,left(编码,4) as 编码 from test');
SQL.Add('union');
SQL.Add('select 月份,left(编码,6) as 编码 from test');
SQL.Add('union');
SQL.Add('select 月份,编码 from test)B');
SQL.Add('group by b.月份,b.编码');
Open;
end;

写到Delphi中运行查询时会提示:参数 数量 没有默认值。不知道哪里错了???
...全文
83 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
同意月亮的说法
另外,宽度的话如果没有自己设定colunm的width,是自动根据field的长度的
woaiwd 2008-02-22
  • 打赏
  • 举报
回复
To: 月亮
恩,就是你说的问题,但是为什么在查询分析器里写成 数量=(.....)就可以成功执行,这里却不行呢?
还有就是查询后,结果倒是出来了,也是预期想要得到的,但是每列的行宽有些夸张,这是什么原因呢?
hongqi162 2008-02-22
  • 打赏
  • 举报
回复
数量 =(.....)

应该是(.....) as 数量 吧


select sum(IsNull(数量,0)) from test where 月份=b.月份'
dulei115 2008-02-22
  • 打赏
  • 举报
回复
单看这段代码没发现有问题
阿三 2008-02-22
  • 打赏
  • 举报
回复
先把程序中的SQL语句截出来,在数据库中看看能不能执行
woaiwd 2008-02-22
  • 打赏
  • 举报
回复
看不出来哪里不一致啊,而且在查询分析器里运行一点问题也没有啊
gjw310 2008-02-22
  • 打赏
  • 举报
回复
用union的话两边的数目和类型应该完全一致,仔细检查一下
gjw310 2008-02-22
  • 打赏
  • 举报
回复
累不累啊,分这么多次写
一下写完不行吗?
qkhhxkj102 2008-02-22
  • 打赏
  • 举报
回复
你牛行了吧
woaiwd 2008-02-22
  • 打赏
  • 举报
回复
test表中字段的长度都是设置好的,查询后相应的字段不是也应该是同样的大小吗?为什么查询后的列的行宽会增加呢?

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧