DAOQuery,SQL,模糊查询,高手请进!(50分)

  • 主题发起人 主题发起人 niceboy911
  • 开始时间 开始时间
N

niceboy911

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
if form1.DAOQuery1.Active
then form1.DAOQuery1.Active:=False;
form1.DAOQuery1.SQL.Clear;
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 like:zihao');
form1.DAOQuery1.ParamByName ('zihao').AsString:=edit1.text;
form1.DAOQuery1.Open;
end;
我使用了以上语句可以使用精确搜索,但是我想使用模糊查询把它改为:
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
if form1.DAOQuery1.Active
then form1.DAOQuery1.Active:=False;
form1.DAOQuery1.SQL.Clear;
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 like:zihao');
form1.DAOQuery1.ParamByName ('zihao').AsString:='%'+edit1.text+'%';
form1.DAOQuery1.Open;
end;
编译后却什么都查不到,请问哪时础的错,或有什么更好的方法?(gtda为表名,字号名称 为字段名)
补充一下是access的数据库
 
like 后加个空格,并且加上引号试试

form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 like "%:zihao%"');
form1.DAOQuery1.ParamByName ('zihao').AsString:=trim(edit1.text);

form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 like :zihao');
form1.DAOQuery1.ParamByName ('zihao').AsString:='"%'+trim(edit1.text)+'%"';
 
老大,不成,行不通,你的第一种方法是 zhizhao not found ,不能找到这个字段,

第二种也不行,输入关键词查不出来
 
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称'+' like'+'%'+trim(zihao)+'%');
 

form1.DAOQuery1.ParamByName ('zihao').value:='%'+edit1.text+'%'
呢??
 
如果我说的没错,你应该在“like”后,“:”前加一个等号,如:
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 like =:zihao');
注意,“like”后一定要有空格。
放心,会有结果的:)
 
各位老大,帮帮我,不成,有的是语法错误,有的是查不出来,我不知道错哪儿了,我的
QQ:28279656,谁想看源码,请加我谢谢
 
没有第一个like
少了“=”

应该为
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
if form1.DAOQuery1.Active
then form1.DAOQuery1.Active:=False;
form1.DAOQuery1.SQL.Clear;
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 =:zihao');
form1.DAOQuery1.ParamByName ('zihao').AsString:='%'+edit1.text+'%';
form1.DAOQuery1.Open;
end;
 
like和=的用法有什么不同?模糊查询到底应该用哪个呢?
 
form1.DAOQuery1.SQL.Add('select * from gtda where 字号名称 =:zihao' + '%');
form1.DAOQuery1.ParamByName ('zihao').value:= edit1.text
 
可是为什么都不行?到底是哪里的原因呢?
 
你的程序里是不是还有其它的WHERE条件,如果有的话检查一下该WHERE内的字段内容
是否为NULL。我的程序写到现在还没有遇到过这种模糊查询查不到的情况呢。
 
null就是不存在吧?应该没有,字段存在,而且精确查询可用。
 
你的数据库如果是Access的话就复制10条记录MAIL过来看看。
 

AdoQuery.Sql.Add('select * from gtda where 字号名称 like '+Chr(39)+'%'+Trim(Edit1.text)+'%'+Chr(39))
Open;
 
上面大哥,请加我,我传给你
 
hw@dtsking.com
 
谢谢大家
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
D
回复
0
查看
828
DelphiTeacher的专栏
D
后退
顶部