我是Access和查询的新手,但尝试快速学习:)
项目有2个表:tblClientData
仅包含客户数据,tblClientComments
包含对所有客户进行的所有评论。
数据库
tblClientData
tblClientComments
我想制作一个选项按钮 - 如果勾选它只会显示某些客户端,当未选中时它会再显示一次。这里出现了问题。
此查询的条件来自此数据库中的另一个表(tblClientComments
)。例如:如果员工联系了客户 - 他正在评论。
为了完成此任务,我需要从tblClientComments
获取所有唯一ID,然后将每个ID作为条件添加到查询tblClientData
。我尝试使用tblClientComments
中的值创建一个数组,然后创建一个查询,但到目前为止仍在使用语法。
或许还有另一种方式?
答案 0 :(得分:2)
我没有看到任何您需要VBA来构建查询的原因。一个简单的SQL IN()
语句当然应该足够了:
SELECT Client.ID, Client.OtherInfo
FROM tblClientsData As Client WHERE Client.ID IN(SELECT tblClientComments.CustID From tblClientComments)
现在,您有几个选择。 (我假设你为了简单起见而使用复选框。)
After Update
事件分配VBA子:
现在输入一些代码:
If(Forms!yourForm!yourCheckbox = True) Then
CurrentDB.QueryDefs("yourQuery").SQL = "SELECT Client.ID, Client.OtherInfo FROM tblClientsData As Client WHERE Client.ID IN(SELECT Comments.CustID From Comments)"
Else
CurrentDB.QueryDefs("yourQuery").SQL = "SELECT Client.ID, Client.OtherInfo FROM tblClientsData As Client"
End If
然后,您可以使用Forms!yourForm.Refresh
通过复选框反映您的更改。
DoCmd.ApplyFilter
应该是一种非常直接的方式来更改表单的内容。 (请注意,最后一个超链接的示例与您的情况非常相似。)