Microsoft Access 查询输入条件

Posted

技术标签:

【中文标题】Microsoft Access 查询输入条件【英文标题】:Microsoft Access Query Input Criteria 【发布时间】:2019-06-04 05:39:35 【问题描述】:

我正在查询我的数据库,其中包含客户信息表和付款表。我需要跟踪每月付款并在每个月底之前联系那些尚未付款的人。我正在处理一个查询以输出当月所有未付款的人的列表。人们可以一次支付一个月或多个月的费用。我的付款表中有一个字符串字段,我在其中记录了哪个月的付款。例如,该值可以是“六月”或“六月、七月、八月” 对于我的查询,我希望能够输入给定的月份并能够查看谁还没有付款。

我已经为查询输入了一个输入,我可以在其中输入任何月份,它会返回其他月份的付款或当有人根本没有付款时,但我无法返回那些值不完全正确的人匹配我输入的“六月”或任何其他单月。我在这里使用类似的功能。这是我的代码:

SELECT Clients.[Player ID], Clients.[Player Name], Clients.[Contact Number], Payment.[Payment Amount], Payment.[Payment Month]
FROM Clients INNER JOIN Payment ON Clients.[Player ID] = Payment. [Player ID]
WHERE (((Payment.[Payment Month]) Not Like [Enter the month:])) OR (((Payment.[Payment Month]) Is Null));

当我对“六月”的输入运行查询时,它会将完成“六月、七月、八月”的人返回为 5 月份的未付款项。我知道这是因为“May, June, July”与“May”的输入值不同。有没有办法可以将这些付款从未付款列表中排除?我不希望查询返回任何可能包含输入月份的值。我在想我可能需要使用通配符,但我不确定如何准确地将这个条件放入查询中,或者我是否需要为它编写任何额外的 SQL 代码。

【问题讨论】:

您应该规范化您的数据库,记录每位客户的每个付费年月。这将使您的任务变得轻而易举。 【参考方案1】:

如果这确实是一个字符串而不是多值字段,并且此时规范化不是一个选项,请尝试:

SELECT Clients.[Player ID], Clients.[Player Name], Clients.[Contact Number], Payment.[Payment Amount], Payment.[Payment Month]
FROM Clients INNER JOIN Payment ON Clients.[Player ID] = Payment. [Player ID]
WHERE (((Payment.[Payment Month]) Not Like "*" & [Enter the month:] & "*")) OR (((Payment.[Payment Month]) Is Null));

建议不要使用弹出输入参数,因为无法验证用户输入。让用户在表单上的组合框等控件中输入值,并将该控件作为参数引用。

【讨论】:

以上是关于Microsoft Access 查询输入条件的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access 表单查询

Microsoft Access 数据库引擎找不到输入表或查询

带有条件列的 Microsoft Access 2007 报表

access 模糊查询 条件 like

Microsoft Access/SQL 错误参数框

Microsoft Access 2013 输入参数值 [关闭]