1

我试图以一百万种不同的方式做到这一点。起初我根本无法让它工作,但现在如果我输入值,我已经设法让它工作。我需要做的是让我的查询根据我在表单中输入的内容过滤我的记录。

我在我的 MovieYear 列的“标准”部分中使用了此代码,当我在表单中的 MovieYear1 和 MovieYear2 文本框中输入数字时,它会正确过滤。

Between [Forms]![SearchForm]![MovieYear1] And [Forms]![SearchForm]![MovieYear2]

但如果我不输入任何值,它根本不会提供任何记录。有什么帮助吗?我已经尝试了几乎所有的东西(好吧,至少我认为我有)。我试过使用通配符“*”,但后来我发现你实际上不能在函数之间使用它们......

我也尝试过在 VBA 中做 Me.Filter,但它似乎没有用。也许我只是错过了什么?

这是我的表格

提前致谢!:)

4

2 回答 2

1

例如,您可以将表单中的 Null 检查添加到查询中

SELECT *
FROM table
WHERE Between [Forms]![SearchForm]![MovieYear1] 
      And [Forms]![SearchForm]![MovieYear2]
      OR [Forms]![SearchForm]![MovieYear1] Is Null

如果第一年为空,这将返回所有记录。第二年将被忽略。

于 2013-03-21T12:06:22.943 回答
0

您可以使用conditional查询构建器,在检查框的值后,您可以根据以下情况构建查询:

  1. 如果只MovieYear1给出,那么之后所有年份的数据MovieYear1都是date>MovieYear1.
  2. 如果只MovieYear2给出,那么之后所有年份的数据MovieYear2都是date<MovieYear2.
  3. 如果两者都给出,则使用between clause获取数据。

这可以通过CASE WHEN以下方式实现

CASE WHEN MovieYear2 IS NULL then date>MovieYear1
else when MovieYear1 IS NULL then date<MovieYear2
else date between MovieYear1  and MovieYear2 
于 2013-03-21T09:37:32.017 回答