Ms access . 现在,当您运行查询时,它将要求您输入一个用户ID,并且它有望向您显示给定用户可以访问的所有问题

Ms access . 现在,当您运行查询时,它将要求您输入一个用户ID,并且它有望向您显示给定用户可以访问的所有问题,ms-access,vba,ms-access-2013,Ms Access,Vba,Ms Access 2013,祝你好运 正是由于您提出这个问题的原因,我建议不要对MS Access表中的列使用多选查找选项。而是创建一个交集表,告诉您两个主表中允许的值的组合。因此,与在tblUsers中使用多选Access列不同,您应该有一个名为tblUserAccess的单独表,该表有两列(UserID和CategoryID)。这两列一起构成此表的复合主键,它们分别是tblUsers和tblCategory的外键。(您应该对tblType执行相同的操作-删除Categories列,并设置一个名为tbltypegorie

祝你好运

正是由于您提出这个问题的原因,我建议不要对MS Access表中的列使用多选查找选项。而是创建一个交集表,告诉您两个主表中允许的值的组合。因此,与在
tblUsers
中使用多选
Access
列不同,您应该有一个名为
tblUserAccess
的单独表,该表有两列(
UserID
CategoryID
)。这两列一起构成此表的复合主键,它们分别是
tblUsers
tblCategory
的外键。(您应该对
tblType
执行相同的操作-删除
Categories
列,并设置一个名为
tbltypegories
的单独表)

在您的查询中,您是否希望这会显示特定用户的所有相关问题?目前,它没有这样做。它提示您输入的原因是因为它不理解
([tblUsers].[Access])
-
tblUsers
在您的查询中未被引用,并且查询无法知道您感兴趣的特定用户

新表就绪(并填充了相关数据)后,应将
tblUserAccess
添加到查询中,将
tblGMPIssues.Category
加入
tblUserAccess.CategoryID
。将
([tblUsers].[Access])
条件从
类别
列中去掉。将
UserID
列添加到网格中,并将条件设置为
[输入UserID]
。现在,当您运行查询时,它将要求您输入一个用户ID,并且它有望向您显示给定用户可以访问的所有问题


祝你好运

使用以下查询获取类别ID 1、2、3或4中的任意一个

Select * from tblGMPIssues where tblGMPIssues.Category in (Select UserAccess from tblUserAccess) 

使用以下查询获取类别ID 1、2、3或4中的任意一个

Select * from tblGMPIssues where tblGMPIssues.Category in (Select UserAccess from tblUserAccess) 

我仍然对您的关系设计有很多问题,或者实际上缺乏适当的关系设计。作为一个例子,下面是我的Access 2007中的一个图表,它显示了数据库的一部分,具有适当的设计。Access会自动显示“一”和“多”符号(我在您的图表中没有看到)。我还显示了“关系”对话框,并选中了相应的字段。请注意,任何表的键(tblIssue除外)都没有系统生成的主键。它们都是纯文本,这样可以在检查数据时更好地理解数据,并且,如前所述,当父表的主键值更改时,数据库会自动更新子表

注意表tblCategoryType:它实现了类别和类型之间的多对多关系,这意味着类别可以是零个或多个类型,类型可以是零个或多个类别。除了“更新级联”之外,此表还选中了“删除级联”复选框,因此如果删除类别,则其与类型(而不是类型)的所有关系都将被删除


我仍然对您的关系设计有很多问题,或者实际上缺乏适当的关系设计。作为一个例子,下面是我的Access 2007中的一个图表,它显示了数据库的一部分,具有适当的设计。Access会自动显示“一”和“多”符号(我在您的图表中没有看到)。我还显示了“关系”对话框,并选中了相应的字段。请注意,任何表的键(tblIssue除外)都没有系统生成的主键。它们都是纯文本,这样可以在检查数据时更好地理解数据,并且,如前所述,当父表的主键值更改时,数据库会自动更新子表

注意表tblCategoryType:它实现了类别和类型之间的多对多关系,这意味着类别可以是零个或多个类型,类型可以是零个或多个类别。除了“更新级联”之外,此表还选中了“删除级联”复选框,因此如果删除类别,则其与类型(而不是类型)的所有关系都将被删除


欢迎使用堆栈溢出!请复习我们的文章,帮助你提出一个好问题,从而得到一个好答案。@Andy,你能给我你正在尝试的查询的SQL吗。您已经在查询的设计模式下拍摄了屏幕截图,有一个SQL按钮单击相同的按钮,您将获得查询的SQL语句。我可以向您推荐解决方案。IssueID IssueStatus IssueUserID IssueDate Expr1004 IssueType IssueVerity IssueLocation IssueDescription IssueCategory 8 1 1 1 2 3 2017年1月28日fdghdfg 3 16 1 2 28/1 2017年1月4 1 3 4 xcvncvbn 4 19 1 29/1 2017年1月5 2 2 2 2 dfxgbxcvbnxcv 5 25 1 2 29/1 2 2017年1月6 1 2 628 1 2 29/01/2017 7 4 5 5 bncvbn 6 29 1 2 26/01/2017 8 3 5 3 cvbncvb 8第10列数据表示调用类别值,因此该查询将用于参数,以返回值为6的所有问题。到目前为止,返回所有问题的当前sql查询是SELECT tblIssues.IssueID、tblIssues.IssueStatus,tblIssues.issueserid,tblIssues.IssueDate,tblIssues.IssueCategory,tblIssues.IssueType,tblIssues.issueverity,tblIssues.IssueLocation,tblIssues.IssueDescription,tblIssues.IssueCategory来自tblIssues,其中((tblIssues.IssueStatus)=“1”);欢迎来到堆栈溢出!请复习我们的文章,帮助你提出一个好问题,从而得到一个好答案。@Andy,你能给我你正在尝试的查询的SQL吗。您已经在查询的设计模式下拍摄了屏幕截图,有一个SQL按钮单击相同的按钮,您将获得查询的SQL语句。我可以向您推荐解决方案。IssueID IssueStatus IssueUserID IssueDate Expr1004 IssueType IssueVerity IssueLocation IssueDescription IssueCategory 8 1 1 1 28/01/2017 3 3 3 3 3 fdghdfg 3 16 1 2 28/0