| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1117 人关注过本帖
标题:ASP中我怎样提取 里面所有的值
只看楼主 加入收藏
lling
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-2-28
收藏
 问题点数:0 回复次数:7 
ASP中我怎样提取 里面所有的值
<select name="select" size="10" multiple>

  <option value="数据集1">数据集1</option>
<option value="数据集2">数据集3</option>
<option value="数据集3">数据集3</option>
<option value="...">...</option>
  </select>  

这是一个可以在列表框中多项选择数据的列表框,现在问题是:
怎样才能实现将列表中多项值提交并得到结果集,并将提交的数值用SQL语句查询出来呢?请大家给予帮助,谢谢!
搜索更多相关主题的帖子: option SQL 数据集 ASP value 
2005-04-05 16:16
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
选择多项后,提交自动会以逗号隔开数据。

天津网站建设 http://www./
2005-04-05 21:33
lling
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-2-28
收藏
得分:0 
谢谢版主答复,我用request.form("select")不能将多个选择的结果集传递,况且我要用列表中选择的数据值来做select查询,如果在列表中选择了多个值,具体怎样得到该值和怎样用它来做查询?能具个例子吗?  盼复!谢谢大家!
2005-04-06 10:36
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
<%
if Request.form("Action")<>"" then
 sql="select * from table where fieldname in ('" & replace(request.form("select"),", ","','") & "')"
 response.write sql
end if
%>
<form name="form1" method="post">
<select name="select" multiple>
<option value="1">---1---</option>
<option value="2">---2---</option>
<option value="3">---3---</option>
<option value="4">---4---</option>
<option value="5">---5---</option>
</select>
<input type="hidden" name="Action" value="提交">
<input type="submit" name="Submit" value="提交">
</form>

我选择2,3,生成的SQL为
select * from table where fieldname in ('2','3')

[此贴子已经被作者于2005-4-6 11:33:08编辑过]



天津网站建设 http://www./
2005-04-06 11:26
lling
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-2-28
收藏
得分:0 
多谢,我试试看.
2005-04-06 15:04
lling
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-2-28
收藏
得分:0 
[QUOTE]我选择2,3,生成的SQL为 select * from table where fieldname in ('2','3') [/QUOTE] 可行,但因需要我用的是存储过程,如在列表中选择一个项目时没有问题,但两个以上时会有问题如提示: Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 必须传递参数个数 2,并以 '@name = value' 的形式传递后续的参数。一旦使用了 '@name = value' 形式之后,所有后续的参数就必须以 '@name = value' 的形式传递。 在使用存储过程 select * from table where @fieldname =('" & replace(request.form("select"),", ","','") & "')" 查询时会出错误,原因是 @fieldname 不能一次将多个值赋给存储过程中的变量,只接受单个赋予。 这时可能需要将多个所选择的列表值存为变量或数组才可以吧? 但又怎样实现? 烦请再帮忙解答一下好吗?!

[此贴子已经被作者于2005-4-6 20:10:24编辑过]

2005-04-06 19:51
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

1.数值型字段的处理 a.存储过程 CREATE PROCEDURE sp_Test( @id varchar(1000) ) AS

declare @SQL nvarchar(2000)

set @SQL=N'Select * from book where id in(' + @id + ')' --生成SQL语句 EXEC sp_executesql @SQL GO b.ASP程序 <% Dim ConnStr Dim Cn,Cmd,Rs Dim ID

if Request.form("Action")<>"" then '取得用户提交的查询条件 ID=replace(request.form("select"),", ",",") '替换时不加单引号 '连接字符串 ConnStr="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=book;Data Source=(local)" '建立Connection对象 Set Cn=Server.CreateObject("ADODB.Connection") '连接数据库 Cn.Open ConnStr '连接Command对象 Set Cmd=Server.CreateObject("ADODB.Command") '设置Command对象的连接 Cmd.ActiveConnection=Cn '设置命令类型为Stored Procedure Cmd.CommandType=4 '指定存储过程名 Cmd.CommandText="sp_Test" '设置存储过程参数 Cmd.Parameters.Append cmd.CreateParameter("@id",200,1,1000) Cmd("@id")= ID '直接赋值给存储过程的参数 '执行存存储过程返回记录集 set Rs=Cmd.Execute While Not Rs.Eof Response.Write Rs("bookname") & " " & Rs("writer") & "<br>" Rs.MoveNext Wend

Rs.Close Set Rs=Nothing Set Cmd=Nothing Cn.Close Set Cn=Nothing end if

%> <form name="form1" method="post"> <select name="select" multiple> <option value="217">---217---</option> <option value="218">---218---</option> <option value="3">---3---</option> <option value="4">---4---</option> <option value="5">---5---</option> </select> <input type="hidden" name="Action" value="提交"> <input type="submit" name="Submit" value="提交"> </form> 2.字符型字段处理 a.存储过程 CREATE PROCEDURE sp_Test2( @writer varchar(1000) ) AS

declare @SQL nvarchar(2000)

set @SQL=N'Select * from book where writer in(' + @writer + ')' --生成SQL语句 EXEC sp_executesql @SQL GO b.ASP程序 <% Dim ConnStr Dim Cn,Cmd,Rs Dim WRITER

if Request.form("Action")<>"" then '取得用户提交的查询条件 WRITER=replace(request.form("select"),", ","','") '替换时加单引号 '连接字符串 ConnStr="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=book;Data Source=(local)" '建立Connection对象 Set Cn=Server.CreateObject("ADODB.Connection") '连接数据库 Cn.Open ConnStr '连接Command对象 Set Cmd=Server.CreateObject("ADODB.Command") '设置Command对象的连接 Cmd.ActiveConnection=Cn '设置命令类型为Stored Procedure Cmd.CommandType=4 '指定存储过程名 Cmd.CommandText="sp_Test2" '设置存储过程参数 Cmd.Parameters.Append cmd.CreateParameter("@writer",200,1,1000) Cmd("@writer")= "'" & WRITER & "'" '在两边再加上一个单引号,然后赋值给存储过程的参数 '执行存存储过程返回记录集 set Rs=Cmd.Execute While Not Rs.Eof Response.Write Rs("bookname") & " " & Rs("writer") & "<br>" Rs.MoveNext Wend

Rs.Close Set Rs=Nothing Set Cmd=Nothing Cn.Close Set Cn=Nothing end if

%> <form name="form1" method="post"> <select name="select" multiple> <option value="席绢">---席绢---</option> <option value="岑凯伦">---岑凯伦---</option> <option value="3">---3---</option> <option value="4">---4---</option> <option value="5">---5---</option> </select> <input type="hidden" name="Action" value="提交"> <input type="submit" name="Submit" value="提交"> </form> 以上程序在Win2000 + IIS5 + SQL Server 2000下测试通过。 

[此贴子已经被作者于2005-4-7 10:38:14编辑过]


天津网站建设 http://www./
2005-04-07 10:33
lling
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-2-28
收藏
得分:0 
谢谢您给我这么详细的解答,实在是佩服,以后要请您多多指教了!多谢!
2005-04-07 19:59
快速回复:ASP中我怎样提取 里面所有的值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017985 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved