我已经研究一周了,但愿不是犯低级错误!

zenger0592 2012-04-03 11:59:13
高手们帮忙看下,这段程序为什么过不去。(Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'

ODBC 驱动程序不支持所需的属性。)

Sql5的值是:Select * from shop_books where 1=1 and anclassid= '27' and bookname like '%m%' (注:27 和 m 都是搜索的值)


dim connstr2
connstr2="DBQ="+server.mappath("../database/mydb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn2=server.createobject("ADODB.CONNECTION")
conn2.open connstr2


dim bigclass,smallclass,sheng,shi,name
bigclass=trim(request("anclassid"))
smallclass=trim(request("nclassid"))
sheng=trim(request("dsheng"))
shi=trim(request("dshi"))
jiage=trim(request("jiage"))
name=trim(request("searchkey"))
name=replace(name,"'","''")



Sql5= " Select * from shop_books where 1=1 "
set rs = conn2.execute(sql5)

if bigclass <>"" then
Sql5= Sql5 & " and anclassid= '"& bigclass &"'"
end if
if smallclass <>"" then
Sql5= Sql5 & " and nclassid= '"& smallclass &"'"
end if
if sheng <>"" then
Sql5= Sql5 & " and dsheng= '"& sheng &"'"
end if
if shi <>"" then
Sql5= Sql5&" and dshi= '"& shi &"'"
end if
if name <>"" then
Sql5= Sql5&" and bookname like '%"& searchkey &"%' "
end if



set rs=server.createobject("adodb.recordset")
rs.open Sql5,conn2,1,1
...全文
236 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenger0592 2012-04-16
  • 打赏
  • 举报
回复
谢谢各位了,可以用了。自己编程经验不足啊!
黑心 2012-04-12
  • 打赏
  • 举报
回复
conn2.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source ="+server.mappath("*.mdb")
换连接方式。
-布谷鸟- 2012-04-12
  • 打赏
  • 举报
回复
你用的是vbscript,不是javascript,以下语句中的加号(+)应改为 &

connstr2="DBQ="+server.mappath("../database/mydb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

再试试看。
一直被平均 2012-04-12
  • 打赏
  • 举报
回复
上面几位朋友说的没错,
你把最终拼接好的sql5代码用response.Write输出一下,然后把这条语句放到数据库的sql视图运行下看看是否正确
Sql5= " Select * from shop_books where 1=1 "


if bigclass <>"" then
Sql5= Sql5 & " and anclassid= "& bigclass
end if
if smallclass <>"" then
Sql5= Sql5 & " and nclassid= "& smallclass
end if
if sheng <>"" then
Sql5= Sql5 & " and dsheng= "& sheng
end if
if shi <>"" then
Sql5= Sql5 &" and dshi= "& shi
end if
if name <>"" then
Sql5= Sql5 &" and bookname like '%"&name&"%'"
end if


response.Write (sql5)
response.End()
先输出
php_wsd 2012-04-11
  • 打赏
  • 举报
回复
先将sql5输出来,拿到数据库中运行一下,看看是否能得到自己想要的结果
如果得到了,再检查asp程序
不能得到,说明sql语句有问题
xuzuning 2012-04-11
  • 打赏
  • 举报
回复
这么多天了,还在纠结这个?
你把组装好的 Sql5 输出一下,不就知道是什么原因了吗?
zenger0592 2012-04-10
  • 打赏
  • 举报
回复
dim bigclass,smallclass,sheng,shi,name
bigclass=trim(request("anclassid"))
smallclass=trim(request("nclassid"))
sheng=trim(request("dsheng"))
shi=trim(request("dshi"))
jiage=trim(request("jiage"))
name=trim(request("searchkey"))
name=replace(name,"'","''")


Sql5= " Select * from shop_books where 1=1 "


if bigclass <>"" then
Sql5= Sql5 & " and anclassid= "& bigclass &""
end if
if smallclass <>"" then
Sql5= Sql5 & " and nclassid= "& smallclass &""
end if
if sheng <>"" then
Sql5= Sql5 & " and dsheng= "& sheng &""
end if
if shi <>"" then
Sql5= Sql5 &" and dshi= "& shi &""
end if
if name <>"" then
Sql5= Sql5 &" and bookname like '%"& name &"%' "
end if


set rs=server.createobject("adodb.recordset")
rs.open Sql5,conn2,1,1

是的,这句我已经改过来了。我觉得问题是出在上面蓝色部分语句。dsheng 和 dshi 字段的类型已经是数值型了,但是查询到这2个变量时,还是出错‘ODBC 驱动程序不支持所需的属性’。真不知道问题还出在哪里...
  • 打赏
  • 举报
回复
if name <>"" then
Sql5= Sql5&" and bookname like '%"& searchkey &"%' "
end if

不知道你的这个变量在哪设置了
我只看到name=trim(request("searchkey"))
所以你红色部分的变量这里应该是空值
crospo 2012-04-08
  • 打赏
  • 举报
回复
同意楼上
zenger0592 2012-04-06
  • 打赏
  • 举报
回复
还是不行啊!
Dogfish 2012-04-05
  • 打赏
  • 举报
回复
链接通了吗?
fyzqk1983 2012-04-05
  • 打赏
  • 举报
回复
name=replace(name,"'","''") 这段注释掉呢?
大萌小路 2012-04-05
  • 打赏
  • 举报
回复
如何了。
hookee 2012-04-04
  • 打赏
  • 举报
回复
anclassid的字段类型是数字的话,不用两边的单引号.
zenger0592 2012-04-04
  • 打赏
  • 举报
回复
但是很奇怪的是,如果我单独搜索,给searchkey值,就可以正常搜出结果。
zenger0592 2012-04-04
  • 打赏
  • 举报
回复
五楼的方法,试了。但会体现下面提示;
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 2

其他各位的方法也试了,还是不行,同样的问题。
xuzuning 2012-04-04
  • 打赏
  • 举报
回复
你把 Sql5 打印出来瞅瞅
孟子E章 2012-04-04
  • 打赏
  • 举报
回复

set rs=server.createobject("adodb.recordset")
rs.open Sql5,conn2,1,1

改成

set rs=conn2.Execute(Sql5)
fyzqk1983 2012-04-04
  • 打赏
  • 举报
回复
还有就是
if name <>"" then
Sql5= Sql5&" and bookname like '%"& searchkey &"%' "
end if

这里要改成
if name <>"" then
Sql5= Sql5&" and bookname like '*"& searchkey &"*' "
end if
因为你用的access
fyzqk1983 2012-04-04
  • 打赏
  • 举报
回复
dim connstr2
connstr2="DBQ="+server.mappath("../database/mydb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

这个换成
dim connstr2
connstr2="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&server.mappath("../database/mydb.mdb")
试试...
我前两天也被这个给搞了晕头了..

28,391

社区成员

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

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