如何把模糊查询的结果显示在Listbox上

GOTO3000 2007-08-01 09:11:24
就是我有一个学生表,其中有个是id字段,其中的值有:111,112,123,124,211,213,224等等,假如我现在只要在TEdit控件中输入2,在listbox控件中就会显示211,213,224。我在输入一个1进去,listbox控件中就显示211,213
请高手指点,最好具体些
...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengxuan 2007-08-01
  • 打赏
  • 举报
回复
建表SQL语句
CREATE TABLE t1(id INT,sname VARCHAR(10))

INSERT INTO t1
SELECT 111,'张明'
UNION ALL
SELECT 112,'李华'
UNION ALL
SELECT 123,'张三'
UNION ALL
SELECT 124,'李四'
UNION ALL
SELECT 211,'王五'
UNION ALL
SELECT 213,'赵六'
UNION ALL
SELECT 224,'小三'

Delphi代码
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Edit1: TEdit;
ListBox1: TListBox;
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Trim(Edit1.Text)='' then Exit;
try
StrToInt(Edit1.Text);
except
ShowMessage('请输入整数');
end;
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT * FROM t1 WHERE id like '+QuotedStr(Edit1.Text+'%');
ADOQuery1.Open;
if ADOQuery1.IsEmpty then
begin
ShowMessage('没有找到');
Exit;
end;
ListBox1.Clear;
while not ADOQuery1.Eof do
begin
ListBox1.Items.Add(ADOQuery1.FieldByName('id').AsString);
ADOQuery1.Next;
end;
end;

end.
aeolus_x 2007-08-01
  • 打赏
  • 举报
回复
添加一个数据库查询控件,查询控件里写入select * from 学生表 where id like '值%'(这个值就是你从edit控件输入的值),然后再用循环杷查询结果写入listbox控件就行了
yi10000 2007-08-01
  • 打赏
  • 举报
回复
先在内部做原始数据备份,然后TEdit控件中输入2条件,重新加载数据到Listbox就可以了
yi10000 2007-08-01
  • 打赏
  • 举报
回复
先在内部做原始数据备份,然后TEdit控件中输入2条件,重新加载数据到Listbox就可以了
zzq4823 2007-08-01
  • 打赏
  • 举报
回复
如果你的id是INT型就不好做,模糊查询的like只是针对字符型的。
pengxuan(网虫先生) 的代码是对的,你要注意数据类型
GOTO3000 2007-08-01
  • 打赏
  • 举报
回复
不行啊,会提示无效字符啊 帮我再想想看哪里出错了

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧