select ckmc,a.spdm,gg1dm,gg2dm,bzsj as ccj,sj1 as dpj,tzsl,kysl,zksl,ztsl,zkc from vw_hems_spkcb as a
left join shangpin as b 
on a.spdm=b.spdm where ckdm>='000' and ckdm<='013' and a.spdm like '%8001%'下面是我移到delphi
  sql.Clear;
  sql.Add('select ckmc,a.spdm,a.gg1dm,a.gg2dm,b.bzsj as ccj,b.sj1 as dpj,a.tzsl,a.kysl,a.zksl,a.ztsl,a.zkc from vw_hems_spkcb as a');
  sql.Add('left join shangpin as b on a.spdm=b.spdm ')  ;
  SQL.Add('and a.spdm like ''%'+edit_spdm.Text+'%''');
  sql.Add('and a.gg1dm like ''%'+edit_gg1dm.Text+'%''');
  sql.add('and a.gg2dm like ''%'+edit_gg2dm.Text+'%''') ;
  if check_dk.Checked=true then begin
  sql.Add('and a.ckdm>=''000'' and a.ckdm<=''013'' and a.qddm=''000''');
  end else
  if check_wf.Checked=true then begin
  sql.Add('and a.qydm not in (''001'',''000'' ) and a.qddm=''000''');
  end else
  if check_nj.Checked=true then begin
  sql.Add('and a.qydm=''001''') ;
  end else begin
  sql.Add('and a.qddm=''000''');
  end;
  SQL.Add('and a.zksl<>0');
  SQL.add('order by ckmc,a.spdm,a.gg1dm,a.gg2dm')  ;
  close;
  open;
  end;
主要是ckdm(仓库代码)我明明是只查000到013代码开头的仓库。为什么所有仓库出来了。

解决方案 »

  1.   

    我把adoquery.sql的语句添加到memo1select a.ckmc,a.spdm,a.gg1dm,a.gg2dm,b.bzsj as ccj,b.sj1 as dpj,a.tzsl,a.kysl,a.zksl,a.ztsl,a.zkc from vw_hems_spkcb as a
    left join shangpin as b on a.spdm=b.spdm 
    and a.spdm like '%8001%'
    and a.gg1dm like '%%'
    and a.gg2dm like '%%'
    and a.ckdm>='000' and a.ckdm<='013' and a.qddm='000'
    and a.zksl<>0
    order by ckmc,a.spdm,a.gg1dm,a.gg2dm在sql里面查是一点问题都没有的。
      

  2.   

       你也太马虎了吧。 sql.Add('left join shangpin as b on a.spdm=b.spdm ')  ; 
      SQL.Add('and a.spdm like ''%'+edit_spdm.Text+'%'''); 
    没有where ?你有where 呢