请大家帮忙看下.这段代码是否可以精简下.总感觉应该有比较好的写法.我的代码写得比较笨.
   主要的问题是在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;

解决方案 »

  1.   


    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.   


    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;
      

  3.   

    有点问题,不过写法还是类似这样。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]
      

  4.   

    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; 
      

  5.   

    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;
      

  6.   

      现在竟然加不起来.明天结贴吧.还有.麻烦各位帮我再答个问题.已经提出来好几天了.一直没有人帮我解答.
      http://topic.csdn.net/u/20080903/14/f9eae873-ed23-4d5e-9000-e8dda0634bc5.html
      希望有高手帮我解答一下.dev才用.实在是有很多问题
      

  7.   

    只有一个人带Open了 其它的人查出来怎么看啊
      

  8.   

    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; 
      

  9.   

        open;
        close.这个不需要再说了.必竟我不是什么都不懂啊