SQL 将条件包含在 Where if not null 中

用户681413

在访问中,我一直在尝试对显示在检查列表的子表单中的内容设置用户过滤器。我尝试研究的其他方法没有奏效,但我使用以下代码取得了成功,如果用户填写任何其他过滤器选项,它会进行过滤。我能想出的是如何让它接受多个过滤器,除非我拼出所有可能的框组合

那么无论如何这实际上是可能的还是我需要查看其他选项?

WHERE [STATUS] = "OPEN" 
AND 
(ANY FORM FILTERS is not Null [Filter by all those that are not null to its matching column])

如果表单过滤器不为空,是否有任何简单的方法来包含条件

SELECT Inspections.INS_ID
    ,Inspections.Category
    ,Inspections.Assigned_Officer
    ,Inspections.Raised_For
    ,Inspections.Account
    ,Inspections.Number
    ,Inspections.Street
    ,Inspections.Area
    ,Inspections.Postcode
    ,Inspections.Date_Raised
    ,Inspections.Reason
    ,Inspections.INS_Comments
FROM Inspections
WHERE (
        ((Inspections.STATUS) = "Open")
        AND (([Forms]![Manage_Open]![Filter_ID]) IS NULL)
        AND (([Forms]![Manage_Open]![Filter_account]) IS NULL)
        AND (([Forms]![Manage_Open]![Filter_officer]) IS NULL)
        AND (([Forms]![Manage_Open]![Filter_Number]) IS NULL)
        AND (([Forms]![Manage_Open]![Filter_Postcode]) IS NULL)
        AND (([Forms]![Manage_Open]![Filter_Category]) IS NULL)
        AND (
            (([Forms]![Manage_Open]![Filter_From]) IS NULL)
            AND (([Forms]![Manage_Open]![Filter_To]) IS NULL)
            )
        )
    OR (
        ([Forms]![Manage_Open]![Filter_ID]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_ID]) = [Inspections].[INS_ID]
        )
    OR (
        ([Forms]![Manage_Open]![Filter_account]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_account]) = [Inspections].[Account]
        )
    OR (
        ([Forms]![Manage_Open]![Filter_officer]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_officer]) = [Inspections].[Assigned_Officer]
        )
    OR (
        ([Forms]![Manage_Open]![Filter_Number]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_Number]) = [Inspections].[Number]
        )
    OR (
        ([Forms]![Manage_Open]![Filter_Postcode]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_Postcode]) = [Inspections].[Postcode]
        )
    OR (
        ([Forms]![Manage_Open]![Filter_Category]) IS NOT NULL
        AND ([Forms]![Manage_Open]![Filter_Category]) = [Inspections].[Category]
        )
    OR (
        (
            (([Forms]![Manage_Open]![Filter_From]) IS NOT NULL)
            AND (([Forms]![Manage_Open]![Filter_To]) IS NOT NULL)
            )
        AND ([Inspections].[Raised_For]) BETWEEN (
                    ([Forms]![Manage_Open]![Filter_From])
                    AND ([Forms]![Manage_Open]![Filter_to])
                    ) )
        );
平均收入

如果我理解正确,您有一个包含多个未绑定控件的表单,用户将填写这些控件。然后您想根据用户输入的内容过滤您的子表单。在这种情况下,您尝试使用的方法将变得非常复杂且难以维护,更不用说在大量数据的情况下速度很慢。最好的办法是在代码中构建过滤器。我经常做的是将控件命名为与字段名称相同的名称,并将字段类型放在控件的标签属性中。然后遍历控件以构建过滤器。这是空气代码,但应该给你一个开始。 Dim strFilter as string Dim ctL as Access.control For Each ctL in Me.Controls If Not ISNull(ctL) And ctL.Tag <> "" Then strFilter = strFilter & " AND " & ctl.Name & " = " If ctL.Tag = "Text" Then strFilter = strFilter & "'" & Replace(ctl, "'","''") & "'" ElseIf ctL.Tag = "Date" Then strFilter = strFilter & "#" & ctl & "#" Else strFilter = strFilter & ctlEnd If Next If strFilter <> "" Then strFilter = mid(strFilter, 6) strFilter = " Where " & strFilter End If Me.yourSubForm.Form.Recordsource = "Select * From <yourQuery> " & strfilter

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Server中where的条件是否不为null

在 WHERE 数组中包含 NULL?

SQL 中的 WHERE 条件 (ORACLE)

SQL WHERE中的多个条件AND

在SQL中包含NULL行

包含在Sql函数中

如果日期不是低日期(01/01/0001),则仅包含在 where 条件中

SQL Server中的'where 1 = 1'和'where null = null'是什么

将 where 子句与子查询结合使用,结果是包含在数组中的记录

在 SQL SERVER 中显示条件 Where 条件

SQL查询中不包含where子句

Linq to SQL Left Join with where子句查找条件或为null

Oracle SQL查询中的条件where子句

在查询 SQL 中添加 AND 条件 Where 子句

SQL Where子句,条件为将where子句设置为等于传递的值,或者如果传递的值为null,则将where子句设置为“ IS NULL”

用例并包含在SQL中

包含在 SQL Server 中的索引

SQL WHERE IS NULL 或 column = 'value'

Where子句基于SQL Server中的null和non null列

MySQL where列包含在字符串中

使用php在sql查询中的where条件中传递数组

包含在列表中的 conditionalPanel 条件

有条件地将元数据包含在Android清单文件中

将“WHERE”语句中的数字转换为在 SQL Server 中包含破折号

在 where-in 查询中带有 null 的 SQL 行值表达式

WHERE {column} IS NOT NULL 的 PHP SQL 查询返回列中为空的行

Seq。包含在Spark Dataframe中的SQL中

sql中具有基于优先级的多个条件的SQL中的where子句SQL BigQuery

将Join 查询与SQL 中的Where 条件查询结合起来