如何进行中文的模糊查询?(50分)

  • 主题发起人 主题发起人 lance2000
  • 开始时间 开始时间
L

lance2000

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么
Query1.close;
Query1.sql.clear;
Query1.sql.Add('select * from country');
Query1.sql.add('where name like'+'"'+'%'+edit1.text+'%'+'"');
Query1.open;
可以,而
Query1.close;
Query1.sql.clear;
Query1.sql.Add('select * from 进货表');
Query1.sql.add('where 品名 like'+'"'+'%'+edit1.text+'%'+'"');
Query1.open;
却不可以。而
Query1.close;
Query1.sql.clear;
Query1.sql.Add('select * from 进货表');
Query1.sql.add('where 品名 ="'+edit1.text+'"');
Query1.open;
又可以。

难道不能 "中文 like 中文",如何进行中文的模糊查询?


(我用的是access表)
 
1.是否语法有误?!
2.宏代换的方法在字符串里好像不行!?
 
可能是中文字段名在delphi中有问题。我原来用中文字段名总是有些奇怪的问题,现在已经
放弃用了
 
肯定不行,很简单的道理因为中文是双字节的
 
应该是你的中文字段名有问题!
 
我想如果在Database Explorer中能够看到正确的中文字段名,
那就应该没有问题。
不过有一点是肯定的:Foxpro的字段不能用中文名,否则在
Databas explorer中显示的字段名称不对,后面加了个_
 
模糊查询可以
我是用
Query1.sql.Add('select * from 进货表');
Query1.sql.add('where 品名 like :pm);
我是用pm这个变量,肯定可以,有事再mail:delphiasp@263.net
 
1.无语法错误.
2.宏代换是可以的 ,'%'相当于dos中'*','-'相当于dos中'?'
3.若中文字段名有问题,为什么 'where 品名 ="'+edit1.text+'"'可以.事实上把'品名'改
为'name'也不行.
我的初步判断是access表的问题,用.dbf就可以.

to: delphiasp
我试试看.
谢谢大家,请继续关注.
 
还是用说用变量比较好!也直观!
with query1 do
begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM 进货表');
Sql.Add('WHERE 品名 like :pm');
ParamByName('pm').AsString := Edit1.Text;//给参数pm赋值
Open;
end;

 
问题我已解决。
很简单,放弃Access改用paradox7.
可能是BDE的问题。(one bug?)
 
to wind2000:
用变量能实现模糊查询吗?我没试过。
 
用变量能实现模糊查询,但我没用过中文字段名.
 
2?使用SQL实现字段数据的模糊查询。Delphi作为一个强大的数据库应用开发工具
的一个重要标志,就是支持SQL编程。在实际的过程中,经常需要对某些字段进行模糊查
询。如对“姓名”字段进行查询,当输入“王”时,能自动地将王姓的所有记录列出来。
其实,通过结合SQL和Delphi的特点,就能很容易地完成这个功能。其基本原理是:查
询时,将查询的范围控制在姓名大于‘查询字符串+chr(0)'与小于‘查询字符串+chr($ff)'
之间,就能将满足条件的所有记录查询出来了。下面是具体的例子:
Var
NameStr:String;∥设置字符串中间变量
Begin
NameStr:=′王′;
Query1?SQL?Clear{清除SQL属性中的SQL命令语句}
Query1?SQL?Add(′Select*FromCustom?
dbwhere(Name1>=N1)and(Name2<=N2)′);∥SQL命令语句
Query1?params[0]?AsString:=NameStr+chr(0);∥控制参数在NameStr+Chr(0)
Query1?params[1]?AsString:=NameStr+chr($ff);∥和NameStr+Chr($ff)之间
Query1?Open;∥打开数据库,执行SQL查询
End;
 
to 陈君凯:
太不通用,如果只知道“名”而不知道“姓”怎么查?
 
多人接受答案了。
 

Similar threads

后退
顶部