Microsoft访问查询输入条件



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

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

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));

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

如果这确实是一个字符串而不是多值字段,并且目前无法选择规范化,请尝试:

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));

建议不要使用弹出输入参数,因为无法验证用户输入。将用户输入值到控件(如窗体上的组合框)中,并将该控件引用为参数。

最新更新