关于数据库模糊查询的问题!请大家多多发表意见!高分相送!来者有分!(100分)

  • 主题发起人 主题发起人 qygd
  • 开始时间 开始时间
Q

qygd

Unregistered / Unconfirmed
GUEST, unregistred user!
那位老兄请指教指教:我要实现对一个表模糊查询,连接用ADOTable1,只要使用该组件的过滤功能!对该表DZMC,RQ.....等字段模糊查询,并且字段输入都使用EDIT编辑框。该怎么写呀?
我写了第一个过滤条件为什么不行?举个例子:
procedure TForm2.Button1Click(Sender: TObject); //模糊查询
var
str_DZMC,str_RQ:string;
BEGIN
if Trim(Edit1.Text)='' then
str_dzmc:=''
else if Trim(Edit1.Text)<>'' Then
str_dzmc:=' and dzmc='+''''+Trim(Edit1.Text)+'*'+'''';
Form1.ADOTable1.Filter:=Str_dzmc;
Form1.ADOTable1.Filtered:=True;
Form1.ADOTable1.open;
close;
if Form1.ADOTable1.RecordCount=0 then
showMessage('没有查询到符合条件的数据。');
END;
 
if Trim(Edit1.Text)='' then
str_dzmc:=''
else if Trim(Edit1.Text)<>'' Then
str_dzmc:=' dzmc='+'''*'+Trim(Edit1.Text)+'*'+'''';
还有是支持*啊还是% 你看一下你的系统
 
你去试试,不知合不合你意………
Adoquery1.close;
Adoquery1.Sql.clear;
Adoquery1.Sql.Add('select * from 自己的数据库 where DZMC like :ycy');
Adoquery1.Paramters.Parambyname('ycy').value:='%'+edit1.text+'%';//查询符合条件的所有记录
Adoquery1.Prepare;
Adoquery1.open;
 
数据库中一般不用*来做通配符的,不同的数据库可能有所不同
一般都用%和_
分别代表任意子符和单个字符,使用[]还可以限制统配那些字符
 
也是建议你用AdoQuery,好控制~
 
if Trim(Edit1.Text)='' then
str_dzmc:=''
else if Trim(Edit1.Text)<>'' Then
str_dzmc:=' dzmc='+''''+'%'+Trim(Edit1.Text)+'%'+''''
Form1.ADOTable1.Filter:=Str_dzmc;
Form1.ADOTable1.Filtered:=True;
Form1.ADOTable1.open;
if Form1.ADOTable1.RecordCount=0 then showMessage('没有查询到符合条件的数据。');

 
我平时用adodataset控件,它也是用sql语句查询,
form1.adodataset1.active := false;
form1.adodataset1.commandtext := 'select * from table1 where DZMC like '+
''''+'%'+Trim(Edit1.Text)+'%'+'''';
form1.adodataset1.active := true;
返回你要查询的模糊值
if form1.adodataset1.isempty then//如果查询记录为空
 
后退
顶部