表名称a
temp   h
100   10
200   20 
300   30
400   40
500   50
...
放两个edit,一个用来输入temp的值,一个用来显示对应的h的值,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
 begin
  with adoquery1 do
begin
  close;
  sql.Clear;
  sql.Add('select h from a where h=:temp');
  parameters.ParamByName('temp').Value:=edit1.Text;
  open;
  if adoquery1.RecordCount>0 then
  begin
  edit2.Text:=adoquery1.fieldbyname('h').AsString;end;
 end;
 end;
但是 edit2.Text:=adoquery1.fieldbyname('h').AsString;这句中的adoquery1.中fieldbyname没有,但是写出来可以运行,输入edit1后按纽edit2不显示请问错在哪里?大家帮忙看一下

解决方案 »

  1.   

    >>输入edit1后按纽edit2不显示
    查询没有找到
      

  2.   

    FieldByName 有时候在IDE里是不提示的,Delphi的Bug
      

  3.   

    修改一下:
    procedure TForm1.Button1Click(Sender: TObject);
     begin
      with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('select h from a where h='''+edit1.Text+'''');
      open;
      if adoquery1.RecordCount>0 then
      begin
        edit2.Text:=adoquery1.fieldbyname('h').AsString;
      end else ShowMessage('数据未找到!');
     end;
     end;
    还有为什么表名和字段名都用单个字母呢?
      

  4.   

    那个是想写起来简单!我用你的方法试了下
    应该是sql.Add('select h from a where temp='''+edit1.Text+'''');
    但是说标准表达式中数据类型不匹配是什么原因啊?
      

  5.   

    我的object treeview里fields里说nothing selected.我是不是少做了了哪些步骤?我用ADOQuery连接数据库了除此之外还应该做什么呢字段那块?