我在编辑C/S数据服务系统时,出现了一个奇怪的问题(100分)

  • 主题发起人 zerg112879
  • 开始时间
Z

zerg112879

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]各位大侠们,我在编辑C/S数据服务系统时,出现了一个奇怪的问题:
在服务器段用ADOquery写下如下代码(select * from bkinform where bk_name like :bookname)
然后在客户端用clientdataset的fetchparameter获得参数
然后用delphi写下如下付值语句:"clientdataset2.Params[0].AsString:='%'+trim(edit2.Text)+'%'"

结果情况是:只能进行英文检索,若输入是中文则无值.
经过修改发现若如下付值则可以进行中文检索
"clientdataset2.Params[0].AsString:='%'+trim(edit2.Text)+'%%%%%%%%%%%%%%%%'"
请问原因何在?
服务器端SQL语句运行正常,用SQL查询分析器实验该SQL语句,可以进行中文检索.
还望大侠们指点迷津,在下先谢过了.
 
试试这句
clientdataset2.Params[0].AsString:= ' ''%'+trim(edit2.Text)+'%'' '
 
行不通,找不到信息呀。
 
各位大虾,我一库等多时了,帮帮我了。
 
且有多少%才能检索多少个汉字,且后面的字符数也有限制,所以我用了n个%.
 
这好像是一个BUG
中文字符到了中间层就被截掉了一半(其实你可以在中文字符后面多加一倍的空格)
如果是用SQLSERVER的话你可以用事件探查器追踪看一下
所以你最好不要传中文的参数
 
"clientdataset2.Params[0].AsString:='%'+trim(edit2.Text)+'%%%%%%%%%%%%%%%%'"
clientdataset2.params[0].Siz=length(edit1.text)
试试
 
找书时肯定要输入几个中文的,大侠们如何来做这个C/S系统?在客户端可以进行模糊查询.
 
语句“select * from bkinform where bk_name like :bookname”
中的参数bookname转化为实际参数时,还有两个引号的,如:
select * from bkinform where bk_name like '%计算机%'//这里引号是语句的一部分
因此,传入的字符串中也应包含引号:
clientdataset2.Params[0].AsString:=''''+//前引号作为字符串的一部分传入
'%'+trim(edit2.Text)+'%'+
''''//后引号作为字符串的一部分传入

或者使用双引号,SQL Server自动判断!
 
可是执行的话会出错呀
救救我吧!
 
顶部