为什么这个选择语句在Access条件中不起作用?

时间:2014-07-21 20:40:41

标签: sql ms-access

我真的不知道我做错了什么......我正在听一篇博客文章中的建议,声明这段代码可以让我保持Access不会违反我的标准(我有很多标准而且它正在制作这个陈述分为四个单独的行并添加列。)这是我现在的代码。

Choose(1,(([dbo_customerQuery].[store])>=[forms]![TransactionsForm]![txtStoreFrom] Or 
[forms]![TransactionsForm]![txtStoreFrom] Is Null) And (([dbo_customerQuery].[store])
<=[forms]![TransactionsForm]![txtStoreTo] Or [forms]![TransactionsForm]![txtStoreTo] 
Is Null))

选择内部的陈述绝对正确,所以我使用“选择”错了吗?我不明白,博客文章就是这样使用它的。当我执行查询时,无论这些字段做什么,我最终都没有得到任何结果。该查询应该基于日期范围进行过滤,将空值考虑在内

3 个答案:

答案 0 :(得分:1)

我担心的是你正试图解决一个糟糕的设计。您可能会在某种程度上解决这个直接问题,并继续构建糟糕的设计。访问是灵活的,宽容的,但最终有一个很大的代价 - 也许你已经在那里。

我意识到这不是一个答案。这可能看起来很粗鲁 - 我道歉。但我认为一般建议可能会对你有所帮助。我将标记这个“社区维基”,因为我没有为编程解决方案做出贡献。

答案 1 :(得分:0)

这可能是放置parens,试试这个:

Choose(1,(([dbo_customerQuery].[store]>=[forms]![TransactionsForm]![txtStoreFrom]) Or 
[forms]![TransactionsForm]![txtStoreFrom] Is Null) And (([dbo_customerQuery].[store]
<=[forms]![TransactionsForm]![txtStoreTo]) Or [forms]![TransactionsForm]![txtStoreTo] 
Is Null))

我已经移动了两个右括号。

答案 2 :(得分:0)

我找到了现在的样子。我的发言

Choose(1,(([dbo_customerQuery].[store])>=[forms]![TransactionsForm]![txtStoreFrom] Or 
[forms]![TransactionsForm]![txtStoreFrom] Is Null) And (([dbo_customerQuery].[store])
<=[forms]![TransactionsForm]![txtStoreTo] Or [forms]![TransactionsForm]![txtStoreTo] 
Is Null))

是正确的,问题是我认为它可以作为一个标准,但它实际上必须完全像上面发布的博客文章。它必须直接作为FIELD发布,使用&#34;&lt;&gt;假&#34;作为标准。

一旦完成,它确实停留在一条线上,并且它按预期工作。