在access2000里是不是不能进行sql匹配查询啊?

koyia 2001-11-24 08:16:14
为什么我写的语句老是不行?
我的代码:

workername=cstr(request.form("workername")) ///获得输入的姓名关键字
if workername="" then
sqlworkername="" ////如果输入关键字为空,则查询语句为空
else
sqlworkername=" and workername like '% "
sqlworkername=sqlworkername&workername&"%'" ///不为空则声称查询代码
end if


我看了看最后生成的代码是这样的,比如我输入一个周字:


sqlworkername=and workername like '% 周%'

可我把sqlworkername镶入我的查询语句后
sql=sql&sqlworkername

执行查询出来的结果总是为空

...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
koyia 2001-11-24
  • 打赏
  • 举报
回复
我们这是公司内部网使用的
使用的人不超过5个
而且除了我外其他使用者30岁以上,且只知道word
连asp是啥都不知道

谁来黑我?
呵呵
不过还是感谢自由人兄的热心肠
粪已给出了:)
freezwy 2001-11-24
  • 打赏
  • 举报
回复
恒等式的问题有吗?
还要记住使用replace过滤',否则就容易被黑的或者产生错误,不信自己可以试。
koyia 2001-11-24
  • 打赏
  • 举报
回复
果然是多加了一个空格!!!
多谢老哥
以后一定小心

之所以把两个句子分开写是因为这是一个多打10个条件的复合查询
所以……

看到请回复
我马上给分

多谢
freezwy 2001-11-24
  • 打赏
  • 举报
回复
sqlworkername=" and workername like '% "
最后不需要空格。
在这样的查询中,你应该注意的处理有:
1.构建SQL中的一个恒等式
比如你原来的sql="select * from table where "
如果这样,第一个条件就产生了一个多余的and,所以你要看你最后的sql打印出来的结果来看问题。
2.过滤单引号
这个道理你应该明白,使用replace()函数就可以解决。
workername=replace(request.form("workername"),"'","''")
从您的问题中,唯一的漏洞可能就是你在后面多加了一个空格,我不明白为什么你把两个句子分开写造成一些不便。请写出你完整的SQL,才能解决问题。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧