拼音码:______姓名:_______
         ________
数据库:|       |
        |_______|
当在拼音码处输入拼音码时,数据库自动检索,并将选择的人名
赋予姓名栏中
控件:edit1   edit2    query1   dbgrid  database数据库结构: 
   ysbm     pym    ysmc
   1001     zw     张为
   1002     lj     刘军
   1003     lj     刘洁
   
   1099     zj     张军    如何选择同拼音码的人名,如我输入 lj   dbgrid中显示刘军  刘洁 下面的程序
只能在姓名处显示刘军,没有办法选择刘洁。procedure TForm1.pymChange(Sender: TObject);
begin
   query1.close;
   query1.sql.clear;
   query1.sql.add('select pym as 拼音码,ysmc as 医师名称 from ysb where yspym like '''+pym.text+'%'' ');
   query1.open;
   n1.text:=query1.fieldvalues['医师名称'];end;请高手指点,如何将dbgrid中选择的内容赋予姓名栏。

解决方案 »

  1.   

    1.用第三方控件,如dxdbgrid,有自动搜索功能
    2.用dbgrid的filter功能--------------------------
    [email protected]
    --------------------------
    --------------------------
      

  2.   

    用Combobox,把选出来的结果都加到combobox的item中,这样就可以从里面选了dbgrid用FieldByName('姓名那一栏的字段名')就可以取出你选择的结果了,然后赋值给相应的edit
      

  3.   

    因为你选出来的是两条记录!!而你只把第一个记录字段賳给你EIDT
    你可以用循环对QUEY值进行赋给EIDT
    EDIT:=EDIT+FIELDVALUES[];
    或都 用楼上的做法
    赋给COMBOX更好
      

  4.   

    哎,每当这个时候,我就想念起PB.....在拼音输入的edit的onchange中对数据集用local,然后再对姓名edit赋值。
      

  5.   

    如果你能保证你的记录只有一条的话,可以在EDIT1的ONEXIT 中执行SQL语句
    query1.sql.add(select ysmc from table_ysgl where ysm=:param_ysm);
    query1.parambyname('param_ysm').asstring:=trim(edit1.text);
    edit2.text:= query1.fieldbyname('ysmc').asstring;
      

  6.   

    说错了,是dbgrid的dataset的filter, 如table,query都有--------------------------
    [email protected]
    --------------------------
    --------------------------