Office中国论坛/Access中国论坛

标题: Else 和Elseif 的问题呢,不明白,请帮忙解决一下. [打印本页]

作者: su_xx    时间: 2008-8-19 11:01
标题: Else 和Elseif 的问题呢,不明白,请帮忙解决一下.
If  条件1  Then
         strwhere = " "
      ElseIf  条件2 Then
               strwhere = "筛选1"      
      ElseIf  条件3 Then
                strwhere = "筛选2"
      Else
                strwhere = "筛选3"
      End If
      
      Me.子窗体.Form.FilterOn = True
      Me.子窗体.Form.Filter = strwhere
      Me.子窗体.Requery
    当条件是2,3时候,筛选是正确的,当执行了else以后,再回到条件1,筛选的结果居然还是else的结果"筛选3"

   我把语句改成下面
    If  条件1  Then
         strwhere = " "
      ElseIf  条件2 Then
               strwhere = "筛选1"      
      ElseIf  条件3 Then
                strwhere = "筛选2"
      Elseif  条件4  then
                strwhere = "筛选3"
      End If
      
      Me.子窗体.Form.FilterOn = True
      Me.子窗体.Form.Filter = strwhere
      Me.子窗体.Requery

这样结果就是正确的,为什么呢?想不明白
作者: liwen    时间: 2008-8-19 13:01
当执行了else以后,再回到条件1,筛选的结果居然还是else的结果"筛选3"?

应该是如果条件1满足了就不会再继续后面的elseif语句了,怎么会执行ELSE以后的语句再回到条件1呢?

使用调试断点或单步执行可以查看语句执行的顺序。

[ 本帖最后由 liwen 于 2008-8-19 13:02 编辑 ]
作者: su_xx    时间: 2008-8-19 13:20
原帖由 liwen 于 2008-8-19 13:01 发表
当执行了else以后,再回到条件1,筛选的结果居然还是else的结果"筛选3"?

应该是如果条件1满足了就不会再继续后面的elseif语句了,怎么会执行ELSE以后的语句再回到条件1呢?

使用调试断点或单步执行可以查看语句 ...


版主可能是我述说有误.一开始如果选择条件1,子窗体显示全表,然后我选择了else条件,子窗体显示"筛选3"结果
.可当我再次选择条件1的时候,可是子窗体显示还是筛选3的结果,不是显示全表.
就这样把我搞晕了,把Else 改成elseif 就不会有这样的现象
作者: liwen    时间: 2008-8-19 15:34
没有实例调试,不知道是否真会这样,照道理应该不会出现你所说的这种情况。

但你可以自己使用断点调试,调试一下这几个语句的执行情况,以确定倒底可能是哪里有问题。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3