0

我已经使用 MS Access 2010 有一段时间了,但我遇到了很大的问题。我将在此处附上一个虚拟数据库以供参考。很简单,三个表:2 个用于数据,1 个用作多对多关系的连接。我有一个查询,我希望能够输入值。假设我输入以下内容:

+-------------+-------------+
|    NameA    |    NameB    |
+-------------+-------------+
|    Frank    |    Bob      |    
|    Frank    |    Harry    |
|    Tom      |    Harry    |
+-------------+-------------+

2 个数据表将以冗余条目结束。就好像查询只是添加一个新条目,而不管表中已有什么。我该如何解决?

提前致谢。

更新:这里的每个请求是查询代码

SELECT Table1.NameA, Table2.NameB
FROM Table2 
INNER 
JOIN (Table1 INNER JOIN Table3 ON Table1.ID = Table3.IDA) 
ON Table2.ID = Table3.IDB;
4

3 回答 3

1

我在这里找到了答案。

要点如下:

  1. 通过 DataSheet View 提供给查询的内置功能非常简单。它只添加新记录,而不考虑创建冗余条目。

  2. 在查询/表级别上无法轻松实现所需的功能。因此,我在表单/报告级别实现了它。就个人而言,理论上我看不到在查询/表级别上实现它的方法,但我确信那里有 VBA 大师可以做任何事情。

  3. 设计人员可以为多对多关系中的每个所需字段使用组合框。这保证没有多余的条目。然后要添加新条目,必须将 VBA 代码添加到组合框的“不在列表中”属性中。见上面的链接。

希望这对将来的某人有所帮助。我知道我很高兴。谢谢您的帮助。

于 2012-08-24T19:20:01.863 回答
0

听起来像w3schools.com的示例, 当您进行内部连接时,它会从任何列匹配的两个表中获取信息。我假设两个表中都有其他列。

于 2012-08-22T19:55:03.773 回答
0

通常,交叉引用表将连接 Table1 和 Table2,如下所示:

选择表 1.名称 1、表 2.名称 2
FROM ((Table1 INNER JOIN TableRef ON Table1.ID1 = TableRef.ID1) INNER JOIN Table2 ON Table2.ID2 = TableRef.ID2)

尝试:

选择 DISTINCTROW 表 1.名称 1、表 2.名称 2
FROM ((Table1 INNER JOIN TableRef ON Table1.ID1 = TableRef.ID1) INNER JOIN Table2 ON Table2.ID2 = TableRef.ID2)

于 2012-08-22T19:56:13.680 回答