注册 登录
编程论坛 ASP技术论坛

奇怪的多条件判断转向---求解

boyfuture 发布于 2008-01-28 17:11, 2243 次点击
各位大虾,又给大家提出一个比较烦恼的问题,望大家能够协助解决为盼:
这个问题是我想通过查询的内容来打开或转移到不同的页面。而且,如果两种以上查询的结果都存在,我该怎么设计,才能打开两个以上的页面,我该怎么做呢?请指教,谢谢!
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每次登陆提醒' "
rs.open sql,conn,1,3%>
<% if rs.eof then%>
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每周定期提醒' "
rs.open sql,conn,1,3%>
<%else%>
 <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../weeknotice.asp";
        </script>
<% if rs.eof then%>
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每月定期提醒' and rishu='"&day(date())&"' "
rs.open sql,conn,1,3%>
<%else%>
 <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../monthnotice.asp";
        </script>
<% if rs.eof then%>
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每天定时提醒' and szsj< time() "
rs.open sql,conn,1,3%>
<% if rs.eof then%>
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='固定时间提醒' and szrq>=date() and szsj< time() "
rs.open sql,conn,1,3%>
<%else%>
 <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../realtimenotice.asp";
        </script>
<% if rs.eof then%>
<%  rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
    Response.End%>
    <%else%>
 <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
<% rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing%>
<%end if%><%end if%><%end if%><%end if%><%end if%>
26 回复
#2
madpbpl2008-01-28 18:35
为什么不用select.....case....,感觉这样写的,好不清晰啊。
#3
boyfuture2008-01-28 18:53
[bo]以下是引用 [un]madpbpl[/un] 在 2008-1-28 18:35 的发言:[/bo]

为什么不用select.....case....,感觉这样写的,好不清晰啊。

实在不好意思,我没有学过,自己摸索的,不过,我可以去看看怎么使用,谢谢啊,您也帮我看看,该怎么去实现不同查询结果转向不同的页面。另,引用同一个div会不会出现错误?
#4
boyfuture2008-01-28 18:59
对了,请问个问题我从网上查询说select   case   语句是多分支处理语句,各分支不能同时执行,  如果我在查询结果中,存在多种情况,需要跳出不同的页面,是不是就不能使用这个方法?
#5
madpbpl2008-01-28 19:04
[bo]以下是引用 [un]boyfuture[/un] 在 2008-1-28 18:59 的发言:[/bo]

对了,请问个问题我从网上查询说select   case   语句是多分支处理语句,各分支不能同时执行,  如果我在查询结果中,存在多种情况,需要跳出不同的页面,是不是就不能使用这个方法? ...

恩,如果出现多个结果是不适合用select。。。case。。。这种写法的
#6
boyfuture2008-01-28 20:01
<% sql="SELECT * FROM alertdata
   case
   when txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每次登陆提醒' then
   <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
  when txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每周定期提醒'  then
   <script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
when txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每月定期提醒' and rishu='"&day(date())&"' then
<script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
when  txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每天定时提醒' and szsj< time()    then
<script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
when txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='固定时间提醒' and szrq>=date() and szsj< time() then
<script language="javascript">
parent.getMsg2();
parent.popalertcontent.location="../popalertnotice.asp";
        </script>
else
<%  rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
    Response.End%>
end
<% rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing%>  改了改,是不是这样啊,但是好像不对。
#7
boyfuture2008-01-28 20:02
哦,那请问像这种情况该怎么弄呢?我想通过查询获得不同结果,采取不同的方案,我该怎么做呢?请指教!谢谢!
#8
madpbpl2008-01-28 20:44
你这样写当然不对的,txzt,szlx,rishu,szrq,这4个字段都是传过来的查询条件?
#9
boyfuture2008-01-28 20:55
是从数据库查询的内容(这些条件是已知的),如果查询的结果满足不同的查询条件,则打开相应的页面。

[[it] 本帖最后由 boyfuture 于 2008-1-28 21:03 编辑 [/it]]
#10
madpbpl2008-01-28 21:38
说实话我不是很理解,如果同时满足多个条件,楼主想跳转到哪个页面去呢?
#11
boyfuture2008-01-28 23:07
不好意思,我的表达能力欠缺,我给你举例吧:
1:数据库 name  sex age
           a     男   20
           b    女    30
           c    女    15
2:查询:sql= select * where  sex=男  
        if not rs.eof then
         跳到页面:男人的世界。asp
         sql= select * where  sex=女  and age>17
            if not rs.eof then
          跳到页面:女人的世界。asp
        sql= select * where  sex=女 and age<17
          if not rs.eof then
          跳到页面:女人的世界--未成年版。asp
如上述数据库内容,我应该打开三个页面:男人世界、女人世界、女人世界-未成年这三个页面,就是这样一个按照查询的内容不同弹出不同的窗口,不符合条件的则不弹出窗口,就这个意思。
请指教!谢谢!
#12
madpbpl2008-01-28 23:12
如果三个条件都搜到呢,到底跳到哪个页面?
#13
boyfuture2008-01-29 01:23
打开三个页面啊,不是只跳一个页面啊。(这么晚了还没有休息啊,佩服啊),也就是打开三个页面的窗口。不同窗口显示不同的内容。(其实,我是做的一个提醒,但是因为提醒的方式不同,需要在不同的方式下打开不同的窗口,但是都是在同一个主页面内弹出窗口,每个窗口显示不同的内容)
#14
madpbpl2008-01-29 02:48
以下程序测试通过,不知道是否满足楼主的需求
<!--#include file="conn.asp"-->
<%
   set rs=Server.CreateObject("adodb.recordset")
   sql= "select * from ta where sex='男'"
   rs.open sql,conn,1,1         
   if not rs.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('111.asp','female');"
   response.write "</script>"
   set rs1=Server.CreateObject("adodb.recordset")
   sql1= "select * from ta where sex='女'  and age>17"
   rs1.open sql1,conn,1,1
   if not rs1.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('222.asp','male');"
   response.write "</script>"
   set rs2=Server.CreateObject("adodb.recordset")
   sql2= "select * from ta where  sex='女' and age<17"
   rs2.open sql2,conn,1,1
   if not rs2.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('333.asp','child');"
   response.write "</script>"
   response.end
   end if
   end if
   end if
   rs.close
   set rs=nothing
   rs1.close
   set rs1=nothing
   rs2.close
   set rs2=nothing
%>

[[it] 本帖最后由 madpbpl 于 2008-1-29 03:30 编辑 [/it]]
#15
boyfuture2008-01-29 20:09
这是我的实例,但是还是提示错误,请指教!(Microsoft VBScript 运行时错误 (0x800A01A8)缺少对象: 'rs3')
<% set rs1=Server.CreateObject("adodb.recordset")
 sql1= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每周定期提醒' "
   rs1.open sql1,conn,1,1
   if not rs1.eof then
  response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
    response.write "parent.popalertcontent.location(../everyweeknotice.asp;)"
   response.write "</script>"
    set rs2=Server.CreateObject("adodb.recordset")
   sql2= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每月定期提醒' and rishu>=day(date())"
   rs2.open sql2,conn,1,1
   if not rs2.eof then
   response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
    response.write "parent.popalertcontent.location(../everymonthnotice.asp;)"
   response.write "</script>"
   set rs3=Server.CreateObject("adodb.recordset")
   sql3= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and and szlx='固定时间提醒' and szrq>=date() and szsj=< time() "
   rs3.open sql3,conn,1,1
   if not rs3.eof then
    response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
    response.write "parent.popalertcontent.location(../realtimenotice.asp;)"
   response.write "</script>"
   set rs4=Server.CreateObject("adodb.recordset")
   sql4= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每天定时提醒' and szsj< time()"
   rs4.open sql4,conn,1,1
   if not rs4.eof then
   response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
    response.write "parent.popalertcontent.location(../everydaynotice.asp;)"
   response.write "</script>"
   response.end
   end if
   end if
   end if
   end if
   rs1.close
   set rs1=nothing
   rs2.close
   set rs2=nothing
   rs3.close
   set rs3=nothing
   rs4.close
   set rs4=nothing
%>

[[it] 本帖最后由 boyfuture 于 2008-1-29 21:37 编辑 [/it]]
#16
madpbpl2008-01-30 02:02
response.write "parent.getMsg2();"
检查一下这句话,是否调用了getMsg2()
先写成一句测试,如果可以慢慢累加!
#17
boyfuture2008-01-31 08:46
谢谢,这个弹出窗口的问题基本解决!辛苦您了!还存在的问题是,当不符合条件,不弹出窗口时,总是提示这样的错误:
错误类型:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'rs4'
并没有出现不符合条件不弹出窗口的结果,请教是不是还少语句呢?请指教!谢谢!

[[it] 本帖最后由 boyfuture 于 2008-1-31 08:52 编辑 [/it]]
#18
madpbpl2008-01-31 10:33
如果条件不成立时,即
if rs.eof and rs.bof成立
则end if
而且底部就不加
rs.close
set rs=nothing
#19
boyfuture2008-01-31 15:44
老大,增加了上述内容后反倒弹不出窗口了,似乎测试中,增加了end if 时,好像语句不再往下执行,就终止了。另外还存在这么个问题,如果查询结果为空的时候,提示错误,提示信息和上边说过的一样。这是我修改过的示例:
 set rs=Server.CreateObject("adodb.recordset")
 sql= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每次登陆提醒' "
   rs.open sql,conn,1,1
   if not rs.eof then
  response.write "<script language='javascript'>"
   response.write "parent.getMsg6();"
   response.write "</script>"
   if rs.eof and rs.bof
   end if
set rs1=Server.CreateObject("adodb.recordset")
 sql1= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每周定期提醒' "
   rs1.open sql1,conn,1,1
   if not rs1.eof then
  response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
   response.write "</script>"
    if rs1.eof and rs1.bof
   end if 请继续指正,谢谢!
#20
madpbpl2008-01-31 15:48
现在是三个条件,你不妨实现一个条件时的情况,成功后再把另两个条件也加上
#21
boyfuture2008-01-31 16:31
老大,是这么个问题,刚才我又修改了一下,发现弹出窗口基本正常,而且除排在第一位置的"每次登陆提醒"外,其他的查询有或没有,也都弹出或不弹出窗口,唯一的问题是,如果“每次登陆提醒”查询结果为空,以后的查询即使都有结果,都弹不出窗口,为什么呢?好像当执行“每次登陆提醒”后,查询的结果为空的时候,就不再进行别的处理了。附前面的两个查询的代码:
set rs=Server.CreateObject("adodb.recordset")
 sql= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每次登陆提醒' "
   rs.open sql,conn,1,1
   if not rs.eof then
  response.write "<script language='javascript'>"
   response.write "parent.getMsg6();"
   response.write "</script>"
  if rs.eof and rs.bof then
   end if
  set rs1=Server.CreateObject("adodb.recordset")
 sql1= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每周定期提醒' "
   rs1.open sql1,conn,1,1
   if not rs1.eof then
  response.write "<script language='javascript'>"
   response.write "parent.getMsg2();"
   response.write "</script>"
 if rs1.eof and rs1.bof then
   end if   请指点,谢谢!
#22
madpbpl2008-01-31 17:27
你理解错我的意思了。
if not rs.eof then
改成
if rs.eof and rs.bof then
else
.............          '打开窗口
试试这样
#23
boyfuture2008-01-31 18:08
结果一样啊。好奇怪哦,似乎只要第一条“每次登陆提醒”结果不为空,就可以,其他的空不空似乎都能正常。但是第一条查询的结果为空,则其他那怕都有结果,都弹不出窗口。。。附列:
set rs=Server.CreateObject("adodb.recordset")
 sql= "SELECT * FROM alertdata WHERE txzt='需要提醒' and syname='"&session("UserName")&"' and szlx='每次登陆提醒' "
   rs.open sql,conn,1,1
   if rs.eof and rs.bof then
   else
  response.write "<script language='javascript'>"
   response.write "parent.getMsg6();"
   response.write "</script>" 烦请看看有没有别的原因。。。
#24
madpbpl2008-01-31 23:43
<!--#include file="conn.asp"-->
<%
   set rs=Server.CreateObject("adodb.recordset")
   sql= "select * from ta where sex='男'"
   rs.open sql,conn,1,1         
   if not rs.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('111.asp','female');"
   response.write "</script>"
   end if
   set rs1=Server.CreateObject("adodb.recordset")
   sql1= "select * from ta where sex='女'  and age>17"
   rs1.open sql1,conn,1,1
   if not rs1.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('222.asp','male');"
   response.write "</script>"
   end if
   set rs2=Server.CreateObject("adodb.recordset")
   sql2= "select * from ta where  sex='女' and age<17"
   rs2.open sql2,conn,1,1
   if not rs2.eof then
   response.write "<script language='javascript'>"
   response.write "window.open('333.asp','child');"
   response.write "</script>"
   response.end
   end if
   
   rs.close
   set rs=nothing
%>
#25
boyfuture2008-02-02 10:23
非常感谢老大多次指教,谢谢了,祝春节快乐!
顺便请教,这个弹出框正常后,但是却影响前面弹出的短信提醒,弹不出短信,以前是短信弹出正常,请问是为什么呢?(前面的短信也是同样的弹出结构是什么原因影响的呢?)
#26
boyfuture2008-02-02 13:46
修改了下,可以了,让您费心了!
#27
boyfuture2008-02-02 20:06
[bo]以下是引用 [un]madpbpl[/un] 在 2008-1-31 23:43 的发言:[/bo]


 

老大,请问这么个问题,我这些弹出的窗口为什么会出现反复刷新的时候,有时会出现有些窗口无法弹出,是什么原因呢?请指教!谢谢啊!
1