数据库查询的问题

jowers 2008-09-10 01:34:43


请大家帮忙看下.这段代码是否可以精简下.总感觉应该有比较好的写法.我的代码写得比较笨.
主要的问题是在comboobx1的选择上.如果选择大库,就查大库的库存,如果选择小库,就查小库的库存.如果选择全部.就查全部.
不知道有没有其它更简单的定法.望指教.




procedure Tform1.button1onclick(sender:Tobject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.Items.Text='大库' then begin
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm=''大库'' group by spdm');
end else if combobox1.Items.Text='小库' then begin
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm=''小库'' group by spdm');
end else begin
sql.add('select spdm,sum(sl) as sl from spkcb')
end;
end;
...全文
72 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nieshiao 2008-09-14
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.ItemIndex>=0 then
sql.add('select spdm,sum(sl) as sl from spkcb')
else
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm='''+combobox1.Items.Text+''' group by spdm');
end;
end;
jowers 2008-09-14
  • 打赏
  • 举报
回复
open;
close.这个不需要再说了.必竟我不是什么都不懂啊
auqfiudh 2008-09-10
  • 打赏
  • 举报
回复
只有一个人带Open了 其它的人查出来怎么看啊
jowers 2008-09-10
  • 打赏
  • 举报
回复
现在竟然加不起来.明天结贴吧.还有.麻烦各位帮我再答个问题.已经提出来好几天了.一直没有人帮我解答.


http://topic.csdn.net/u/20080903/14/f9eae873-ed23-4d5e-9000-e8dda0634bc5.html


希望有高手帮我解答一下.dev才用.实在是有很多问题
jowers 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gzmhero 的回复:]
Delphi(Pascal) code
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.ItemIndex>=0 then
sql.add('select spdm,sum(sl) as sl from spkcb')
else
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm='''+combobox1.Items.Text+''' group by spdm');
end;
end;
[/Quote]

这个比较精简一点.谢谢了.也谢谢其它答题的.每种方法都不错.我加点分一人分点吧.谢谢了.
nanchangfantasy 2008-09-10
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.ItemIndex>=0 then
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm='''+combobox1.Items.Text+''' group by spdm')

else sql.add('select spdm,sum(sl) as sl from spkcb')

end;
end;


阿三 2008-09-10
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
var
vStr: String;
begin
vStr := ' select spdm,sum(sl) as sl from spkcb where 1=1';
if combobox1.Items.Text<>'' then
vStr := vStr +' and ckdm=:ckdm';
vStr := vStr +' group by spdm';
with adoquery1 do
begin
close;
sql.text := vStr;
if combobox1.Items.Text<>'' then
parameters.parambyname('chdm').value := combobox1.Items.Text;
Open;
end;
end;
gzmhero 2008-09-10
  • 打赏
  • 举报
回复
有点问题,不过写法还是类似这样。

Delphi(Pascal) code
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.Items.Text='' then
sql.add('select spdm,sum(sl) as sl from spkcb')
else
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm='''+combobox1.Items.Text+''' group by spdm');
end;
end;
[/Quote]
JeffChung 2008-09-10
  • 打赏
  • 举报
回复

procedure Tform1.button1onclick(sender:Tobject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.Items.Text='全部' then
sql.add('select spdm,sum(sl) as sl from spkcb')
else
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm=' +
QuotedStr(combobox1.Items.Text)+' group by spdm');
end;
end;
gzmhero 2008-09-10
  • 打赏
  • 举报
回复

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.clear;
if combobox1.ItemIndex>=0 then
sql.add('select spdm,sum(sl) as sl from spkcb')
else
sql.add('select spdm,sum(sl) as sl from spkcb where ckdm='''+combobox1.Items.Text+''' group by spdm');
end;
end;

2,507

社区成员

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

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