主题:  关于多项搜索的新问题??

sund

职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2001/5/20 23:16:15
#12001/6/2 23:42:35
我看了面包的多项搜索教程,有一个问题想请教,在做价格条件项时我想用一个下拉式菜单表示限定价格(如1-100元,100-500元.....)而不是用两个文本框,在一个取值项中该如何做。



5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:654
注册:2000/12/19 10:59:22
#22001/6/3 1:18:36
?不是很难呀,不过最好设置为少于100或者少于500,否则比较麻烦些。现在只要菜单中设置值为100、500,在记录集中设置字段小于变量即可。



sund

职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2001/5/20 23:16:15
#32001/6/3 11:20:09
我现在用的就是你说的方法。但我想知道如何限定价格范围在第二项中是100-500而不是小于500。该如何做?谢了。



5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:654
注册:2000/12/19 10:59:22
#42001/6/3 11:47:40
这个要看具体情况了,或者可以设隐藏域为公用,如值为“100”,在语句中共用该变量。。。。。。所以说具体情况具体解决,好好想想,不会难度很大的。



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#52001/6/4 13:06:24
用一
select case price
case "100"
sqlstr=...
case "100-500"
sqlstr="select * form table while price>100 and price<500"
..
end select
cnn.execute sqlstr



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#62001/6/4 13:06:42
用一
select case price
case "100"
sqlstr=...
case "100-500"
sqlstr="select * form table where price>100 and price<500"
..
end select
cnn.execute sqlstr



寂寞菜鸟

职务:普通成员
等级:1
金币:1.0
发贴:173
注册:2001/2/24 17:47:55
#72001/6/4 17:17:49
在学习UD的同时,看看SQL,ASP基本知识还是有好处的,毕竟UD还不是很完善。我们的目的是通过学习UD而掌握ASP,你说呢?



sund

职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2001/5/20 23:16:15
#82001/6/5 23:54:20
germchen今天看了你给我的源码,先谢谢你。但是有地方不懂,cnn是指什么?我将源码加载后运行提示缺cnn对象。我尝试着用if语句做也不行。寂寞菜鸟说的没错我是打算好好学学ASP(总不能老是用UD来蒙人吧)但是也不是一朝一夕能掌握的。所以还得向大家多多请教。
以下是我添加后的代码,能帮我看看吗?
<%
Dim rs1__MMColParam
rs1__MMColParam = "1"
if (Request.QueryString("type") <> "") then rs1__MMColParam = Request.QueryString("type")
%>
<%
Dim rs1__MMflower_price
rs1__MMflower_price = "1"
if (Request.QueryString("price") <> "") then rs1__MMflower_price = Request.QueryString("price")
select case price
case "100"
sqlstr="select * form table where price<100"
case "100-500"
sqlstr="select * form table where price>100 and price<500"
end select
cnn.execute sqlstr
%>
---------------------------------------------
<%
set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.ActiveConnection = MM_connshop_STRING
rs1.Source = "SELECT * FROM flower WHERE type = '" + Replace(rs1__MMColParam, "'", "''") + "'and " + Replace(rs1__MMflower_price, "'", "''") + ""
rs1.CursorType = 0
rs1.CursorLocation = 2
rs1.LockType = 3
rs1.Open()
rs1_numRows = 0
%>



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#92001/6/6 16:10:18
set cnn=server.createobject("adodb.connection")
cnn.open "数据源"
Set rsTest = Server.CreateObject("ADODB.Recordset")
rsTest.CursorLocation = adUseClient '这样设置可减轻数据库负载
rsTest.CursorType = adOpenStatic '游标需要前后移动
rsTest.CacheSize = rowcount '设置这个选项会提高性能
select case request.querystring("price")
case "100":
sqlstr="select * form table where price<100"
case "100-500":
sqlstr="select * form table where price>100 and price<500"
....
end select
rsTest.Open sqlstr, Cnn, , , adCmdText
rsTest.PageSize = rowcount '设置每一页的记录数
...

编辑历史:[这消息被germchen编辑过(编辑时间2001-06-06 16:16:08)]
[这消息被germchen编辑过(编辑时间2001-06-06 16:17:59)]


sund

职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2001/5/20 23:16:15
#102001/6/7 0:24:04
是否非得要将ADO的connection和Recordset结合使用才能完成。connection对象我还没用到过,我得看看书上的介绍。回头有不懂的再问你可以吗?
有两个问题请教:1.是否需要返回到记录set rstest=cn.Execute(strsql) 2.rsTest.Open sqlstr, Cnn, , , adCmdText 打开记录集后面的几个看不懂。



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#112001/6/7 10:30:37
set cnn=server.createobject("adodb.connection")
...
rsTest.Open sqlstr, Cnn, , , adCmdText其实与
...
rstest.CursorType = 0
rstest.CursorLocation = 2
rstest.LockType = 3
rstest.Open()
是一样效果的。
用了rsTest.Open sqlstr, Cnn, , , adCmdText就不必再用set rstest=cnn.execute(sqlstr)了



sund

职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2001/5/20 23:16:15
#122001/6/7 15:56:01
germchen你好:你给的代码放上去但是我没法在UD中操作recordest中的数据了因为在数据行为栏里找不到定义的数据集了,代码错了吗?将游标类型改后总是说数据冲突,请问UD中有没有直接对connection操作的指令。问题太多希望没有烦到你。

<%
Dim rs1__MMColParam
rs1__MMColParam = "1"
if (Request.QueryString("flower_price") <> "") then rs1__MMColParam = Request.QueryString("flower_price")
%>
<%
set cnn=server.createobject("adodb.connection")
strconnection ="dsn=dsshop;"
cnn.open strconnection
set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.ActiveConnection = cnn
rs1.Source = "SELECT * FROM flower WHERE flower_price = " + Replace(rs1__MMColParam, "'", "''") + ""
select case request.querystring("price")
case "100":
sqlstr="select * form table where price<100"
case "100-500":
sqlstr="select * form table where price>100 and price<500"
end select
rs1.CursorType = 0
rs1.CursorLocation = 2
rs1.LockType = adOpenStatic
rs1.Open()
rs1_numRows = 0
%>



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#132001/6/7 16:49:29
你问我UD中有没有直接对connection操作的指令,说实话,我从来不用UD,因为不喜欢,而且功能也不好,所以一般我是在FP中设好框架然后手写代码的。
其实你也可以这样用的呀
<%
Dim rs1__MMColParam
rs1__MMColParam = "1"
if (Request.QueryString("flower_price" <> "" then rs1__MMColParam = Request.QueryString("flower_price"

set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.ActiveConnection = MM_connshop_STRING

select case request.querystring("price")
...
case "100":
rs1.source="select * form table where price<100"
case "100-500":
rs1.source="select * form table where price>100 and price<500"
...
end select
rs1.CursorType = 0
rs1.CursorLocation = 2
rs1.LockType = adOpenStatic
rs1.Open()
rs1_numRows = 0
%>

编辑历史:[这消息被germchen编辑过(编辑时间2001-06-07 16:53:03)]