窗体中有两个名为edit1,edit2的Tedit,想当edit2输入ID号时,edit1 显示相应数据库的内容,以下是代码,但是问题是,第一次双击edit2时,edit1能正确显示内容,但是修改edit2ID号,再次click时,却依然显示第一次双击时,显示的内容,如:第一次edit2,输入1,双击,edit1正确显示:新年好;将edit2输入2,再双击,edit1依然显示:新年好.本来应该显示:恭喜发财.谢谢大家啦...
procedure Tkssz.Edit2DblClick(Sender: TObject);
begin
 try
  adoquery1.close;
  adoquery1.Connection:=form1.ADOConnection1;
  adoquery1.SQL.Add('select section_name from section where section_id='+Quotedstr(edit2.Text));
  adoquery1.open;
  if not adoquery1.isEmpty then
  begin
  edit1.Text:= adoquery1.fieldbyname('section_name').Value;
  end;
  except
    raise;
    end
end;

解决方案 »

  1.   

    procedure Tkssz.Edit2DblClick(Sender: TObject); 
    begin 
    try 
      Edit1.text := '';
      adoquery1.close; 
      adoquery1.Connection:=form1.ADOConnection1; 
      adoquery1.SQL.Add('select section_name from section where section_id='+Quotedstr(edit2.Text)); 
      adoquery1.open; 
      if not adoquery1.isEmpty then 
      begin 
      edit1.Text:= adoquery1.fieldbyname('section_name').Value; 
      end; 
      except 
        raise; 
        end 
    end; 這裏要注意兩個問題。查詢前先把EDIT裏的內容清除掉。另外就是要確定輸入第二次的值後SQL能返回數據,那麼EDIT1.text  才可能有值
      

  2.   

    另外如果Section_ID  是整型,不是字符的話,直接這樣寫:procedure Tkssz.Edit2DblClick(Sender: TObject); 
    begin 
      try 
        Edit1.text := '';
        adoquery1.close; 
        adoquery1.Connection:=form1.ADOConnection1; 
        adoquery1.SQL.Add('select section_name from section where section_id='+Trim(edit2.Text)); 
        adoquery1.open; 
        if not adoquery1.isEmpty then 
        begin 
          edit1.Text:= adoquery1.fieldbyname('section_name').asString; 
        end; 
      except 
        raise; 
      end 
    end;
      

  3.   

    starluck 大哥,问题依然存在...
      

  4.   

    procedure Tkssz.Edit2DblClick(Sender: TObject); 
    begin 
      try 
        Edit1.text := '';
        adoquery1.close; 
        adoquery1.Connection:=form1.ADOConnection1; 
        adoquery1.SQL.text :='select section_name from section where section_id='+Trim(edit2.Text);  //  用 sql.text  或者sql.clear;   後再sql.add
        adoquery1.open; 
        if not adoquery1.isEmpty then 
        begin 
          edit1.Text:= adoquery1.fieldbyname('section_name').asString; 
        end; 
      except 
        raise; 
      end 
    end;
      

  5.   

    procedure Tkssz.Edit2DblClick(Sender: TObject); 
    begin 
      try 
        Edit1.text := '';
        adoquery1.close; 
        adoquery1.Connection:=form1.ADOConnection1; 
        adoquery1.SQL.text :='select section_name from section where section_id='+Trim(edit2.Text);  //  用 sql.text  或者sql.clear;   後再sql.add
        adoquery1.open; 
        if not adoquery1.isEmpty then 
        begin 
          edit1.Text:= adoquery1.fieldbyname('section_name').asString; 
        end; 
      except 
        raise; 
      end 
    end;
      

  6.   


    begin 
    try 
      adoquery1.close; 
      adoquery1.Connection:=form1.ADOConnection1;
      adoquery1.clear;   // 要先清空语句
      adoquery1.SQL.Add('select section_name from section where section_id='+Quotedstr(edit2.Text)); 
      adoquery1.open; 
      if not adoquery1.isEmpty then 
       begin 
         edit1.Text:= adoquery1.fieldbyname('section_name').Asstring; 
       end; 
    except 
        raise; 
    end 
    end;