如何动态付值,进行模糊查询(50分)

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

zerg112879

Unregistered / Unconfirmed
GUEST, unregistred user!
各位前辈,如何在服务器端设置ADOQUERY的SQL
使我可以在客户端进行模糊查询
eg:图书的检索查找,
另外,delphi是不是不支持LIKE语句??[:(]
 
like用在ADOQuery的sql语句里面不就可以了吗?
 
select sth. from table1 where id like :ID in Query
 
直接在ADOQuery里写SQL语句
如:
SQL.text:='Select * from TableName Where name like '+''''+Edit1.text+'%'+'''';
不行吗?
 
支持与否不是看DELPHI的,而是看你使用的数据库
with query1.sql do
begin
close;
clear;
add('select * from tab where bookname like ''%DELPHI%'';');
open;
end;
 
呵呵动态构建sql语句
with adoqurey1 do
begin
close;
sql.clear;
sql.add('select * from tablename like');
open
end;
 
看后台数据库,数据库支持的语法在Query内都支持,Query的作用就是将语句传到后台让数据库执行!
 
看后台数据库:我用过ACCESS2000,SQLSERVER2000,用‘%’即可。
写法:adoqueyr1.add('select * from table where name like '+#39+'%'+edit1.text
+'%'+#39);
 
呵呵,各位大哥们,看看我的ADOquery的SQL语句,里面一定有问题
select * from 书籍信息 where 书名 like '%'(:bookname)'%'
请大家帮帮纠正它。[^]
 
不要小括号拉
select * from 书籍信息 where 书名 like '%:bookname%'
 
这样岂不是让其搜索带:bookname的书籍吗?
而不是搜索动态变量bookname?
 
sql.text := 'select * from 书籍信息 where 书名 like ''%:bookname%''';
para........

带冒号的单词会被自动认为是参数
 
我在SQL中试过了,(where 书名 like ''%:bookname%''')中':book'被当作了书名,
我想最终在客户端用clientdataset的fetch params获得参数
请问怎么搞定?
 
agree xelloss
凡是SQL语句中的冒号后面的都被认为是参数
然后你再写
query1.ParamByName('bookname').Value=edit1.text
query1.open
 
query1.ParamByName('bookname').Value=edit1.text
query1.open
问题在于运行不了
程序中不承认'%'
 
select * from 书籍信息 where 书名 like '%' +bookname+'%'
 
呵呵,这我早试过了,行不通。
adoQuery1.add('select.........')可行,但不能传递参数给客户端啊
 
>>我在SQL中试过了,(where 书名 like ''%:bookname%''')中':book'被当作了书名,
在sql是不行,只有在DELPHI中可用。

>>我想最终在客户端用clientdataset的fetch params获得参数
如果是3层的话,客户端只需要传参数就可以了,
SQL语句放到中间层执行,返回clientdataset的data给客户端。
 
exec('select * from 书籍信息 where 书名 like ''%'+:bookname+'%''')
100%OK
 

Similar threads

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