procedure TTSCX_Form.Button1Click(Sender: TObject);
var sqlstr:string;
begin
   try
     listView1.Items.Clear;
     edit1.SetFocus;
  
     if radioButton1.Checked then
       begin
         sqlstr:='select *  from tsb ';
       end ;
     if sm_rad.Checked then
       begin
         if edit1.Text=' ' then
           messageDlg('请输入书名,再查询!',mtError,[mbOk],0)
else
           sqlstr:='select *  from tsb where (sm='''+edit1.Text+''')';
       end;
     if code_rad.Checked then
       begin
         if edit1.Text=' ' then
           messageDlg('请输入书号,再查询!',mtError,[mbOk],0)
else
           sqlstr:='select * from tsb where (code='''+edit1.Text+''')';
       end;
     if pree_rad.Checked then
       begin
         if edit1.Text=' ' then
           messageDlg('请输入出版社,再查询!',mtError,[mbOk],0)
else
           sqlstr:='select * from tsb where(pree='''+edit1.Text+''')';
       end;
     if author_rad.Checked then
       begin
         if edit1.Text=' ' then
           messageDlg('请输入作者,再查询!',mtError,[mbOk],0)
else
           sqlstr:='select * from tsb where(author='''+edit1.text+''')';
        end;     with adoquery1 do
       begin
         SQL.Clear;
         SQL.Add(sqlstr);
         open ;
         label1.Caption:='共'+intToStr(recordcount)+'记录';         while not eof do
           begin
             with listView1.Items.Add  do
               begin
                 caption:=fieldByName('code').AsString;
                 subitems.Add(FieldByName('sm').AsString);
                 subitems.Add(FieldByName('author').AsString);
                 subitems.Add(FieldByName('pree').AsString);
                 subitems.Add(FieldByName('outtime').AsString);
                 subitems.Add(FieldByName('cost').AsString);
                 subitems.Add(FieldByName('memo').AsString);
               end;
               next;
           end;
          close;
     end;
     except
       messageDlg('系统操作失败!',mtError,[mbOk],0);
     end;end;end.
为何以上代码只能作全部查询与一个以期书号为条件,其他条件不能查询,请指教?本人用相同方法写过都可以期,反以今次就不行