简单的按系别查询,为什么不能实现?请指教。
procedure TForm5.Button2Click(Sender: TObject);
begin
try
if trim(edit2.Text)<>'' then
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add('select * from table1 where ky_xb=:A order by ky_name');
query1.ParamByName('A').AsString:=edit2.Text;
query1.Prepare;
query1.Open;
query1.Refresh;
end;
except
showmessage('查询条件错误,请重新输入!');end;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
try
if trim(edit2.Text)<>'' then
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add('select * from table1 where ky_xb=:A order by ky_name');
query1.ParamByName('A').AsString:=edit2.Text;
query1.Prepare;
query1.Open;
query1.Refresh;
end;
except
showmessage('查询条件错误,请重新输入!');end;
end;
--改为
Query1.Params.ParamByName('A').AsString := trim(edit2.Text);
query1.Refresh;
showmessage(inttostr(query1.recordcount));//////////////看看
谢谢大家,我试试你们的方法,
结果是1!这是怎么回事?我连接的表是有很多数据的
废话少说,
你把edit2.text的内容写出来
估计就明白是什么问题了.
在dbgrid能显示所有记录
procedure TForm5.Button2Click(Sender: TObject);
begin
try
if trim(edit2.Text)<>'' then
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add('select * from table1 where ky_xb=:A order by ky_name');
query1.Params.parambyname('A').AsString:=trim(edit2.Text);
query1.Prepare;
query1.Open;
query1.Refresh;
//showmessage(edit2.Text);
//showmessage(inttostr(query1.recordcount)); end;
except
showmessage('²éѯÌõ¼þ´íÎó£¬ÇëÖØÐÂÊäÈ룡');end;
end;
但我把姓名查询也改成sql就出错了,代码如下:
procedure TForm5.Button1Click(Sender: TObject);begin
try
if trim(edit1.Text)<>'' then
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add('select * from table1 where ky_name=:A order by ky_sex');
query1.Params.parambyname('A').AsString:=trim(edit1.Text);
query1.Prepare;
query1.Open;
query1.Refresh;
//showmessage(edit2.Text);
//showmessage(inttostr(query1.recordcount)); end;
except
showmessage('²éѯÌõ¼þ´íÎó£¬ÇëÖØÐÂÊäÈ룡');end;
end;
可能是你数据库中ky_name字段中的值含空格