现有两个表cyb(成员表)和dwb(单位表)
表内容如下:
cyb表:  xm(姓名)  dwmc(单位名称)
          张三      阳光集团
          李四      三毛集团
          王武      阳光集团
          江民      染织厂
dwb表:  dwmc(单位名称)  dwdz(单位地址)
          三毛集团          太阳路3号   
          阳光集团          职工路10号
          染织厂码          杨柳路4号
想实现以下功能:在输入cyb表时,如果单位已在dwb表里,我输入单位的前几个字,输入框能够自动感应,将单位全称直接输入。
就和EXcle中重复输入相同内容时会自动感应。这里不能用下拉框因为单位实在太多了。

解决方案 »

  1.   

    使用模糊查询功能,简单实现如下:
    在输入框的onChange事件中实现
    private
      flag :Boolean=false;
    procedure EditOnChange(Sender:TObject);
    var
      StrSQL:String;
      StrDWMC:String;
      Query:TQuery;
    begin
      if Flag then Exit;
      Query := TQuery.Create(nil);
      with Query do
      begin
        StrSQL := 'Select * from dwb where dwmc like '+#39+Edit.Text+'%'+#39;
        SQL.Text := StrSQL;
        open;
        if RecordCount>0 then 
        begin
          Edit.Text := FieldByName('dwmc').AsString;
          Flag:= True;
        end;
        Free;
      end;end;
    在Edit的OnExit事件中将flag置为False;