你见过这么难的吗?送高分!

freckroser 2003-02-25 08:55:36
WEB1.ASP有26个文本域,任选其中几个输入数据后,提交到WEB2.ASP;
在WEB2.ASP中根据web1.asp提交的数据,写SQL查询语句:
sqltxt="select * from lifeng_mold where 列名1='"&值1&"' [and 列名2='"&值2&"']"
其中,web1.asp中选了几个文本域“列名”就有多少个,既:“列名”动态生成。
“值”也是如此,且取web1.asp提交的文本域的值。
请问高手如何实现,高分送高手!!!
...全文
62 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
伟大de虫子 2003-02-25
  • 打赏
  • 举报
回复
唉。。。。太多人答了,不赶这趟混水了~~
cyliao 2003-02-25
  • 打赏
  • 举报
回复
我給你總結一下:
第一種方法:matq2008(能者行)的方法,也是最笨的方法.
sqltxt = "select * from table where "
i=0
for i=1 to request.form.count-1 //最后一个是提交按钮,不要
'依次判断,加入条件,
if request.form(i)<>"" then
sqltxt =sqltxt & " 列名1='" & request.form(i) & " and "
end if
next
第二種方法: zcchm(zcchm的方法,是最常用方法.
Dim strSql
Dim strSelect
Dim strWhere
Dim rst
Dim frmItem
strSelect = ""
strWhere = ""
for each frmItem in Request.Form
if Len(trim(Request.Form(frmItem))) > 0 then
if Len(strSelect) = 0 then
strSelect = strSelect & "select " & frmItem
strWhere = strWhere & "where " & frmItem & " = " & Request.Form(frmItem)
'此处再增加数字类型判断,比如若是字符串,两边还要加上"'"
else
strSelect = strSelect & "," & frmItem
strWhere = strWhere & " and " & frmItem & " = " & Request.Form(frmItem)
end if
end if
next
strSql = strSelect & " " & strWhere
set rst = Server.CreateObject("AdODB.Recordset")
rst.Open strSql, Conn, 1, 1
第三種方法, superdullwolf(超级大笨狼)的方法,這種方法我沒用過,不好說
select case 做,如果text1为空,旗鱼有值,那么yourSelect="011111111111"
select case yourSelect
case "01111111111"
sql="select * from..."
case "00111111111"
sql="select * from..."
最後說說我的看法:上面幾種方法都用了"1=1" 或"2>1" 這類的方法來處理所有為空的情況,但這種方法不可取,試想如果所有為空,將出現"select * from table"的現象,也就是把所有記錄都找出來,這與希望的結果不一樣,我常這樣做:
dim sql
sql=""
用上面的方法之一把列名和值寫入sql
然後判斷:if len(sql)>0 then
sql="select * from table where " & sql
rs.open sql
end if
超级大笨狼 2003-02-25
  • 打赏
  • 举报
回复
select case 做,如果text1为空,旗鱼有值,那么yourSelect="011111111111"
select case yourSelect
case "01111111111"
sql="select * from..."
case "00111111111"
sql="select * from..."

如果有26个text,那就有2的26次方中查询可能,我前几天做了一个,2的7次方的
不过可以过滤一些不必要的查询,最后有32种可能,于是写32条查询语句
叶子哟 2003-02-25
  • 打赏
  • 举报
回复
agree up!
:)
muddledman 2003-02-25
  • 打赏
  • 举报
回复
更正:
sqltxt = "select * from table where 1=1 "
for i=1 to request.form.count-1
if request.form(i)<>"" then
sqltxt =sqltxt & "and "&"列名"&i&"='" & request.form(i)&"' "
end if
next

muddledman 2003-02-25
  • 打赏
  • 举报
回复
上面有点问题,就是表单内容都为空提交时程序将出错,程序应该为
sqltxt = "select * from table where 1=1 "
for i=1 to request.form.count-1
if request.form(i)<>"" then
sqltxt =sqltxt & "and "&"列名1='" & request.form(i)&"' "
end if
next
ShiningstarHu 2003-02-25
  • 打赏
  • 举报
回复
在WEB1.asp这个页面多家一个域,在提交这个表单的时候通过客户端的脚本向这个域里面添加你所选的这几个文本域的名字。

然后在 WEB2.asp中通过读取这个域的值就知道你在Web1.asp中选了哪几个文本域了。

不复杂。
zcchm 2003-02-25
  • 打赏
  • 举报
回复
忘了:
strSql = strSelect & " from lifeng_mold" & strWhere
叶子哟 2003-02-25
  • 打赏
  • 举报
回复
呵呵,and 前还是少了个'

叶子哟 2003-02-25
  • 打赏
  • 举报
回复
也可以用:
for each in objitem in request.form
if.....
next
zcchm 2003-02-25
  • 打赏
  • 举报
回复
利用字符串组合查询
//web2.asp
<%
Dim strSql
Dim strSelect
Dim strWhere
Dim rst
Dim frmItem
strSelect = ""
strWhere = ""
for each frmItem in Request.Form
if Len(trim(Request.Form(frmItem))) > 0 then
if Len(strSelect) = 0 then
strSelect = strSelect & "select " & frmItem
strWhere = strWhere & "where " & frmItem & " = " & Request.Form(frmItem)
'此处再增加数字类型判断,比如若是字符串,两边还要加上"'"
else
strSelect = strSelect & "," & frmItem
strWhere = strWhere & " and " & frmItem & " = " & Request.Form(frmItem)
end if
end if
next
strSql = strSelect & " " & strWhere
set rst = Server.CreateObject("AdODB.Recordset")
rst.Open strSql, Conn, 1, 1
%>
//大致是这样,你可以改改。其实就是组合字符串,不难。
hchxxzx 2003-02-25
  • 打赏
  • 举报
回复
sql="select * from lifeng_mold where 1=1"
if request.form("xxx1")<>"" then
sql=sql&" and 列名1='"&request.form("xxx1")&"'"
end if
if request.form("xxx2")<>"" then
sql=sql&" and 列名2='"&request.form("xxx2")&"'"
end if
......
叶子哟 2003-02-25
  • 打赏
  • 举报
回复
更正:
sqltxt = sqltxt & " 列名" &i&" ="'" & request.form(i) & " and "
叶子哟 2003-02-25
  • 打赏
  • 举报
回复
依次判断,可以用循环
sqltxt = "select * from table where "
i=0
for i=1 to request.form.count-1 //最后一个是提交按钮,不要
'依次判断,加入条件,
if request.form(i)<>"" then
sqltxt =sqltxt & " 列名1='" & request.form(i) & " and "
end if
next

sqltxt=sqltxt & " 2>1 "

28,390

社区成员

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

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