代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
  With Query1 do
  begin
    Close;
    Sql.Clear;
    Query1.Sql.add('select * from SPXX where SPCODE='+quotedstr(Edit1.Text)+' and SP_ID='+Edit2.Text);
    Open;
  end;
end;
设想:无论是在Edit1.Text还是在Edit2.Text内,或是两个Edit内都添入条件,都能够在DBGird中显示出查询的结果,而现在编译运行后总提示“SQL语法错误”,请问该如何实现我的想法,谢谢各位了!!!

解决方案 »

  1.   

    问题出在edit2上 如果是空 就不行的
      

  2.   

    可以用if判断啊,if Edit1.Text='' then  begin....end else ..//将sql分开写!
      

  3.   

    你的程序应该没有SQL语法错,只是不能达到你的要求
    最简的作法:
    Query1.Sql.add('select * from SPXX where 1=1'); //很多老外的程序都这样做
    if Edit1.Text<>'' then
      Query1.Sql.add('and  SPCODE='+quotedstr(Edit1.Text));
    if Edit2.Text<>'' then
      Query1.Sql.add('and  SP_ID='+Edit2.Text);
      

  4.   

    to: keiy() 
    谢谢,做了5,6年数据库查询,没有想过这个办法,每次要判断多个分支,谢谢!