微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MS Access – 过滤#Multiple Criteria 而忽略空值

如何解决MS Access – 过滤#Multiple Criteria 而忽略空值

从本质上讲,我试图在三个条件下过滤表单......没有一个过滤器覆盖前一个......

  1. 不符合项是打开还是关闭 - 来源 = 选项按钮
  2. 在日期范围之间 - 来源 = 文本输入字段
  3. 涉及哪些操作Source = ComboBox

我决定使用 If 语句来覆盖选项按钮。如果选项 xx 为真,则 过滤器工作正常,直到组合框或日期输入文本字段中有一个空白值。 然后在查询表达式中返回一个错误,说 Extra)

If Me.Option54 = True Then
    Filter = "([Date] Between #" & Format([TxtDtStrt],"yyyy\/mm\/dd") & "# And #" & Format([TxtDtEnd],"yyyy\/mm\/dd") & "#) And ([OpDescription]=" & ([Combo58]) & ")And ([NCR Clsd?]=False)"
    End If
    If Me.Option56 = True Then
    Filter = "([Date] Between #" & Format([TxtDtStrt],"yyyy\/mm\/dd") & "#) And ([OpDescription]=" & ([Combo58]) & ")And ([NCR Clsd?]=True)"
    End If
    If Me.Option54 = False And Me.Option56 = False Then
    Filter = "([Date] Between #" & Format([TxtDtStrt],"yyyy\/mm\/dd") & "#) And ([OpDescription]=" & ([Combo58]) & ")"
    End If

Me.FilterOn = True

如果源字段为空,有没有办法忽略过滤器?

我似乎无法让 IsNull 命令实际执行任何操作

解决方法

如果没有提供条件,要么使用更多条件语句不使用过滤器,要么处理 null 以替换为另一个值。

Nz([Date],#1/1/1900#)

Format(Nz([TxtDtStrt],#1/1/1900#))

Format(Nz([TxtDtEnd],#12/31/2099#))

,

我找到的最终解决方案是使用 IsNull 和 Not IsNull 作为布尔值,结合 IF 并覆盖公共子中的所有可能组合

然后在点击每个过滤器时调用公共子......它的工作原理,只是想知道是否有更优雅的方式来做到这一点......

recycler_view = findViewById(R.id.recycler_view)

        recycler_view.addOnScrollListener(object : RecyclerView.OnScrollListener(){
            override fun onScrolled(recyclerView: RecyclerView,dx: Int,dy: Int) {
                if(dy > 0){
                    fab.hide();
                } else{
                    fab.show();
                }
                super.onScrolled(recyclerView,dx,dy)

            }
        })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。