在以下公式中留空时,如何使日期条件显示所有记录?
How can I make the date criteria show all records when left blank in the following formula?
我制作了一个搜索表单,允许用户在公司费用报告中搜索某些客户、项目、员工和日期范围。
对于日期条件框,我有以下公式:
Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]
这很好用,但如果我不输入任何日期,则不会显示任何记录,我想更改此设置,以便在留空时显示所有记录。
我已经能够使用以下公式对项目、客户和员工字段执行此操作:
Like "*" & [Forms]![Search Form]![cboProject] & "*"
Like "*" & [Forms]![Search Form]![cboClient] & "*"
Like "*" & [Forms]![Search Form]![txtEmployee] & "*"
你们可能确切地知道这意味着什么,但无论如何我还是会简要解释一下:当我在 Employee 的文本框中、Project 的组合框或 Client 的组合框中输入内容时,我搜索和 运行 查询,只显示与我输入的值匹配的值。 Like "*" 位使得如果没有输入任何值,所有值都会显示出来。
我想对日期范围做同样的事情,但这对我来说有点棘手,谁能帮我解决这个问题的语法,让我的日期开始和结束日期框在留空时显示所有内容?因为现在如果我将它们留空,则不会显示任何记录,这对用户端来说是一个巨大问题。
我试过:
Like "*" & (Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]) & "*"
但它对我不起作用,当我输入日期范围时,查询中会出现不正确的日期范围。
正确的写法是什么?
当 txtDateFrom 和 txtDateTo 都包含非 Null 值时,听起来您的查询 returns 是正确的行。
但是当 txtDateFrom 或 txtDateTo 为 Null 时,您希望返回所有行。在这种情况下,您可以在 WHERE
子句中添加 2 个条件:
WHERE
your_date_field Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]
OR [Forms]![Search Form]![txtDateFrom] Is Null
OR [Forms]![Search Form]![txtDateTo] Is Null
Dim A As String
Dim B As String
Dim p As String
A = Nz(Forms!frmsearchInv!txtDateFrom, "1")
B = Nz(Forms!frmsearchInv!txtDateFor, "1")
If A = "1" Then
A = "0000-01-01"
End If
If B = "1" Then
B = "9999-01-01"
End If
p = "select * from orders where [orderDate] >= #" & A & "# AND [orderDate] <=#" & B & "# "
我制作了一个搜索表单,允许用户在公司费用报告中搜索某些客户、项目、员工和日期范围。
对于日期条件框,我有以下公式:
Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]
这很好用,但如果我不输入任何日期,则不会显示任何记录,我想更改此设置,以便在留空时显示所有记录。
我已经能够使用以下公式对项目、客户和员工字段执行此操作:
Like "*" & [Forms]![Search Form]![cboProject] & "*"
Like "*" & [Forms]![Search Form]![cboClient] & "*"
Like "*" & [Forms]![Search Form]![txtEmployee] & "*"
你们可能确切地知道这意味着什么,但无论如何我还是会简要解释一下:当我在 Employee 的文本框中、Project 的组合框或 Client 的组合框中输入内容时,我搜索和 运行 查询,只显示与我输入的值匹配的值。 Like "*" 位使得如果没有输入任何值,所有值都会显示出来。
我想对日期范围做同样的事情,但这对我来说有点棘手,谁能帮我解决这个问题的语法,让我的日期开始和结束日期框在留空时显示所有内容?因为现在如果我将它们留空,则不会显示任何记录,这对用户端来说是一个巨大问题。
我试过:
Like "*" & (Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]) & "*"
但它对我不起作用,当我输入日期范围时,查询中会出现不正确的日期范围。
正确的写法是什么?
当 txtDateFrom 和 txtDateTo 都包含非 Null 值时,听起来您的查询 returns 是正确的行。
但是当 txtDateFrom 或 txtDateTo 为 Null 时,您希望返回所有行。在这种情况下,您可以在 WHERE
子句中添加 2 个条件:
WHERE
your_date_field Between [Forms]![Search Form]![txtDateFrom] And [Forms]![Search Form]![txtDateTo]
OR [Forms]![Search Form]![txtDateFrom] Is Null
OR [Forms]![Search Form]![txtDateTo] Is Null
Dim A As String
Dim B As String
Dim p As String
A = Nz(Forms!frmsearchInv!txtDateFrom, "1")
B = Nz(Forms!frmsearchInv!txtDateFor, "1")
If A = "1" Then
A = "0000-01-01"
End If
If B = "1" Then
B = "9999-01-01"
End If
p = "select * from orders where [orderDate] >= #" & A & "# AND [orderDate] <=#" & B & "# "