如果X是其他值的TRUE,则显示记录

时间:2014-09-11 05:00:48

标签: sql ms-access

我有一些逻辑问题。

我有一个包含多个列(Name, Address etc)的表和三个名为recNewsLetter, recAGM and recPhoneCall的表,每个Yes/No填充checkbox

我有另一个带有三个复选框Receive Newsletter, Receive AGM Info & To Phone的表单。我正在寻找一个查询,我可以在其中选择表单中的一个复选框,它将显示该复选框为真的所有记录,而不管其他的。

例如,我想查看recNewsletter为true的所有记录,无论其他记录是否为真。如果recAGM为真,则相同;我希望查看所有这些记录,无论recNewsLetterrecPhonecall的状态如何。

我的查询仅显示存在确切组合的记录。例如,如果recNewsletter为true(即表格上的复选框已勾选),它将仅显示那些记录为真,其他记录为假的记录。如果recNewsletter和{ recAGM为真,那么它只显示两个都是真的记录,而另一个(recPhoneCall)是假的。

正如您可能已经猜到的那样,我的SQL基本上是一个' WHEN recNewsLetter和recAGM AND recPhoneCall'。例如,我会在显示所有新闻稿的记录后,无论AGM或电话呼叫的价值如何。

这是代码:

SELECT tblOrganisations.ID, tblOrganisations.OrgName
FROM tblOrganisations
WHERE (((tblOrganisations.recNewsLetter) = 
[Forms]![frmPrintOrgLabels].[ReceiveNewsletter])) And 
(((tblOrganisations.recAGM) = [Forms]![frmPrintOrgLabels].[ReceiveAGMInfo])) And 
(((tblOrganisations.recPhoneCall)=[Forms]![frmPrintOrgLabels].[ToPhone]));

任何帮助都非常感谢!

[R

1 个答案:

答案 0 :(得分:0)

据我所知,你需要像

这样的东西
WHERE (

(tblOrganisations.recNewsLetter and [Forms]![frmPrintOrgLabels].[ReceiveNewsletter])

OR
(tblOrganisations.recAGM and [Forms]![frmPrintOrgLabels].[ReceiveAGMInfo])

OR 
(tblOrganisations.recPhoneCall and [Forms]![frmPrintOrgLabels].[ToPhone])

)