procedure TForm1.Button1Click(Sender: TObject);
begin
 with mydata.Query1 do
 begin
 close;
 with sql do
 begin
 clear;
 add('select * from Student where 姓名=:name');
 ParamByName('name').AsString:=trim(Edit1.Text);
 end;
 if(mydata.Query1.FindLast) then
 begin
 open;
 end
 else
 begin
 showmessage('该姓名不存在,请重新输入');
 end;
 end;
end;end.

解决方案 »

  1.   

    with  query1 do
    begin
    close;
    sql.clear;
    sql.text:='select * from Student where 姓名=:name';
    Parameters.ParamByName('name').value:=trim(Edit1.Text); 
    open;
    end;if queyr1.reocrdcount<1 then
    showmessage('该姓名不存在,请重新输入');
      

  2.   

    if(mydata.Query1.FindLast) then 
    begin 
    open; 
    end这句有问题,在没有打开查询呢,怎么会findlast呢,也就是说你的查询语句永远没有执行。
    楼上的正确,看看吧
      

  3.   

    传参后,没有把结果集Open,FindLast也就没有意义了
      

  4.   

    先OPEN再FindLast,顺便说一下,楼主把代码复杂化了,这个功能很简单的几句就可以搞定,别给自己找麻烦.