+ -
当前位置:首页 → 问答吧 → 请问怎么控制在edit1中输入一个字符,就能查找出数据表中第一个字符符合输入字符的记录?

请问怎么控制在edit1中输入一个字符,就能查找出数据表中第一个字符符合输入字符的记录?

时间:2011-10-14

来源:互联网

请问怎么控制在edit1中输入一个字符,就能查找出数据表中某一字段记录第一个字符符合输入字符的记录?
我原来是这样写的:
ADOQuery1.SQL.Text:='select zhi from cr where leixing like ''%'
  +IfThen(RadioButton1.Checked, '', IfThen(RadioButton2.Checked, '国产', '进口'))+'%'' and zhi like ''%'+StringReplace(Edit1.Text, '''', '''''', [rfReplaceAll, rfIgnoreCase])+'%'' group by zhi order by zhi';
  ADOQuery1.Open;
  try
  while not ADOQuery1.Eof do
  begin
  ListBox1.Items.Add(VarToStr(ADOQuery1['zhi']));
  ADOQuery1.Next;
  end;
  finally
  ADOConnection1.Close;
  end;
这样,我在Edit1中输入A,在ListBox1中会显示所以包含有A的所有记录,比如:
123A
56A7899A
A12345
A5566
但我要的效果是在Edit1中输入A,在ListBox1中会显示所以包含以A开头的所有记录
A12345
A5566,其他的就不显示出来了,
请问在我原来的基础上要怎么修改好?谢谢

作者: grace_zou   发布时间: 2011-10-14

补充:Edit1输入的内容是不定的,就要在ListBox1中显示Edit1输入的内容为开头的所有记录

作者: grace_zou   发布时间: 2011-10-14

ADOQuery1.SQL.Text:='select zhi from cr where leixing like ''%'
  +IfThen(RadioButton1.Checked, '', IfThen(RadioButton2.Checked, '国产', '进口'))+'%'' and zhi like ''%'+StringReplace(Edit1.Text, '''', '''''', [rfReplaceAll, rfIgnoreCase])+'%'' group by zhi order by zhi';

把红色部分去掉试试。

作者: zhnglicho   发布时间: 2011-10-14

前面的百分号%不要就可以

作者: hqkaka   发布时间: 2011-10-14

ADOQuery1.SQL.Text:='select zhi from cr where leixing like ''%'
  +IfThen(RadioButton1.Checked, '', IfThen(RadioButton2.Checked, '国产', '进口'))+''' and zhi like ''%'+StringReplace(Edit1.Text, '''', '''''', [rfReplaceAll, rfIgnoreCase])+'%'' group by zhi order by zhi'; like 前面的%不要 

作者: hqkaka   发布时间: 2011-10-14

引用 2 楼 zhnglicho 的回复:
ADOQuery1.SQL.Text:='select zhi from cr where leixing like ''%'
+IfThen(RadioButton1.Checked, '', IfThen(RadioButton2.Checked, '国产', '进口'))+'%'' and zhi like ''%'+StringReplace(Edit1.Text, '''', ''……
查询语言里面用like语句,可以去查查sql方面的资料

作者: hylf1985   发布时间: 2011-10-15

引用 2 楼 zhnglicho 的回复:
ADOQuery1.SQL.Text:='select zhi from cr where leixing like ''%'
+IfThen(RadioButton1.Checked, '', IfThen(RadioButton2.Checked, '国产', '进口'))+'%'' and zhi like ''%'+StringReplace(Edit1.Text, '''', ''……
查询语言里面用like语句,可以去查查sql方面的资料

作者: hylf1985   发布时间: 2011-10-15

用like就OK啦,在网上查一下sql这方面的资料

作者: hylf1985   发布时间: 2011-10-15

// 该方法适用数据量不是很大的情况
procedure TForm1.Edit1Change(Sender: TObject);
const s = ' select 查找字段1,查找字段2 from 表 where 比较字段 like ''%S%%'' ';
var vss:String;
begin
  vss := StringReplace(edit1.text,'被替换内容','替换后内容');
  vss := format(s,[vss]);
  ADOQuery1.Close;
  adoQuery1.sql.text := vss;
  try
  adoQuery1.open;
  while not ADOQuery1.Eof do
  begin
  // ListBox1.add(adoquery1.fieldbyname('显示内容字段名').asstring;
  ADOQuery1.Next;
  end;
  finally
  ADOQuery1.Close;
  ADOConnection1.Close;
  end;
end;

作者: fmj   发布时间: 2011-10-15