请大家帮我这个菜鸟看一下下面这段代码,有没有更好的解决办法?
procedure Txswh.Button1Click(Sender: TObject);
var
  cx_string:string;
begin
  if combobox1.ItemIndex = 0 then
     application.MessageBox('请选择查询条件!','注意:',64)
  else
    if (trim(edit1.text) = '') or (trim(edit1.text)='请在这里输入内容') then
       application.MessageBox('请输入要查询的内容!','注意:',64)
    else
      begin
        adodataset1.First;
        while not(adodataset1.Eof) do
          begin
               if combobox1.ItemIndex = 1 then
                  cx_string:=trim(ADODataSet1.FieldByName('班级').text);
               if combobox1.ItemIndex = 2 then
                  cx_string:=trim(ADODataSet1.FieldByName('学号').text);
               if combobox1.ItemIndex = 3 then
                  cx_string:=trim(ADODataSet1.FieldByName('姓名').text);
            if trim(cx_string) <> trim(edit1.Text) then
               adodataset1.Next
            else
              begin
                application.MessageBox('学生记录已找到!','恭喜',64);
                exit;
              end;
            if adodataset1.Eof then
               application.MessageBox('学生未找到!','确认',32);
          end;
      end;
end;

解决方案 »

  1.   

    使用Locate方法
    ADODataSet1.Locate('班级',trim(Edit1.Text),[]),余者以此类推
      

  2.   

    1、姓名:模糊查询和精确查询
    2、学号:有<和>和=还有<>
    等等之类。
      

  3.   

    为提高性能,使用SQL 查询
    ADODataSet1.CommandText := 'Select * from 数据表 where 班级="' Edit1.Text +'"'';
    ADODataSet1.CommandText := 'Select * from 数据表 where 学号="' Edit1.Text +'"'';
    ADODataSet1.CommandText := 'Select * from 数据表 where 姓名="' Edit1.Text +'"'';