急!升级到D6 SP2 后,查询有问题!是ADO问题还是TEDIT的问题?(200分)(200分)

  • 主题发起人 YANCHAO28
  • 开始时间
Y

YANCHAO28

Unregistered / Unconfirmed
GUEST, unregistred user!
原来写有一个三层结构的查询程序,服务端用ADO连接SQLSERVER2k,有一按姓名查询
员工的adoquery
select * from employee where xm like :xm0
在客户端有一个页面,内有一个tedit 控件 tedit1。 查询程序为
with clientdataset1do
begin
close;params[0].value:=trim(edit1.text);open end;
在升级到d6 sp2 后,出现了一些奇怪的现象:
如果在 edit1 中输入 '王%',可以列出王姓员工
如果在edit1 中输入 '王小%',则查不出以"王小"打头的员工
如果在 如果在edit1 中输入 '王小%%'或'王小% ' ,则查出所幼
以"王小"打头的员工(其中最不个字符不限,有一个位置就可以)
这到底是为什么?

 
ADO出了问题
 
LEEZERO:
哪我该如何办呀?
 
ADO与MIDAS连接经常会传递参数有错误
解决方法如下:
1,直接在应用服务器建立过程,如selsql1
procedure TRemoteDataMudule.selsql1(input:widestring);
begin
Adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.sql.text:=input;
adoquery1.prepared:=True;
Adoquery1.open;
end;
 
2,用客户端不要用clientdataset传递参数啦
而是用
socketConnection1.appserver.selsql1('select * from employee where xm like '+''''+trim(edit1.text)+'%'+'''');

 
delphilove:
不用参数,有些可能太过复杂了吧
 
本来就是CLientDataSet的BUG,一直就有。
以中文作参数,要在其后补充相应数量的空格,就可以了,
我一直这样用。
“王小%”=“王小% ”
^^^^^^四个空格
你试试,一定行
 
顶部