我用delphi编程了一个程序,我在文本框的onchange属性输入了一下代码:procedure TForm1.Edit2Change(Sender: TObject);
beginif ((trim(edit2.Text)<>'') and (length(edit2.Text)>1)) then
   begin
   adoquery2.First;
   listbox2.Clear;
    adoquery2.SQL.Clear;
   adoquery2.sql.add('select cn from c_Dict where cn like'+''''+trim(edit2.Text)+'%'+'''');
   adoquery2.Open;
     while adoquery2.Eof =False do
        begin
           listbox2.Items.Add(adoquery2.FieldByName('cn').AsString);
            adoquery2.Next;
         end;
 end;
end;我数据库中开头"阿"字母的词好多,别如说:‘阿尔法’,‘阿根’,
但是我输入“阿”的时候,在列表框中不显示所有开头"阿"的。
我用一样的方法搜索英文了,但是英文可以显示开头"a"的词了,代码如下:if ((trim(edit3.Text)<>'') and (length(edit3.Text)>1)) then
begin
  adoquery6.SQL.Clear;
adoquery6.sql.add('select en from e_Dict where en like'+''''+trim(edit3.Text)+'%'+'''');
adoquery6.Open;
    adoquery6.First;
    listbox3.Clear;
    listbox3.Visible:=true;
    while adoquery6.Eof =False do
      begin
        listbox3.Items.Add(adoquery6.FieldByName('en').AsString);
        adoquery6.Next;
      end;    end;
如何解决搜索中文时候的不显示开头“阿”的词的问题?

解决方案 »

  1.   

    procedure TForm1.Edit2Change(Sender: TObject);
    beginif (trim(edit2.Text)<>'' then
    begin
       listbox2.items.Clear;
       adoquery2.SQL.Clear;
       adoquery2.sql.add('select cn from c_Dict where cn like '''+trim(edit2.Text)+'%''');
       adoquery2.Open;
       while adoquery2.Eof =False do
       begin
        listbox2.Items.Add(adoquery2.FieldByName('cn').AsString);
        adoquery2.Next;
       end;
     end;
    end;
      

  2.   

    1、为什么查询前,adoquery不先关闭
    2、SQL写法看不清,喜欢以下的写法procedure TForm1.Edit2Change(Sender: TObject);
    begin
      if ((trim(edit2.Text)<>'') and (length(edit2.Text)>1)) then
      begin    
        listbox2.Clear;
        adoquery2.close;    //修改
        adoquery2.SQL.Clear;
        adoquery2.sql.add('select cn from c_Dict where cn like "'+trim(edit2.Text)+'%"');  //修改
        adoquery2.Open;
        while not adoquery2.Eof do  //修改
        begin
          listbox2.Items.Add(adoquery2.FieldByName('cn').AsString);
          adoquery2.Next;
        end;
      end;
    end;