我正在查询包含客户信息表和付款表的数据库。我需要跟踪每月付款,并与每个月底之前尚未付款的人联系。我正在处理一个查询,以输出所有当月未付款的列表。人们可以一次支付一个月或几个月的费用。我的付款表中有一个字符串字段,其中记录了付款的月份。该值可以是例如“ 6月”或“ 6月,7月,8月”。对于我的查询,我希望能够输入给定的月份并能够查看谁还没有付款。
我已经为查询输入了一个输入,可以在任何月份键入,并且它将返回其他月份的付款或某人根本没有付款,但是我无法返回那些值与我的输入不完全匹配的查询“ 6月”或任何其他单个月。我在这里使用like函数。这是我的代码:
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));
当我对输入“ June”运行查询时,它返回已完成“六月,七月,八月”作为五月份未付款的人。我知道这是因为“五月,六月,七月”与“五月”的输入值不同。有什么办法可以将这些付款从未付款清单中排除?我不希望查询返回可能包含输入月份的任何值。我当时在想可能需要使用通配符,但不确定如何在查询中准确输入此条件,或者不确定是否需要为其编写任何其他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));
建议不要使用弹出输入参数,因为无法验证用户输入。将用户输入值输入到窗体上的组合框等控件中,并将该控件作为参数引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句