【发布时间】:2021-03-29 22:16:08
【问题描述】:
当我在 Database Tools > Relationships 手动创建两个表之间的关系时,Access 允许我设置 连接属性,使其成为 内连接或左或右外连接:
但是当我在 VBA 中创建关系时:
sSQL = "ALTER TABLE [" & sTable1 & "] ADD CONSTRAINT [" & sTable1 & "] " & _
"FOREIGN KEY ([" & sKey & "]) REFERENCES [" & sTable2 & "]([" & sKey & "]);"
oDB.Execute sSQL
它将关系创建为内部连接。我可以通过转到Database Tools > Relationships 并查看 VBA 创建的关系来看到这一点:
我看不到告诉 VBA 使用什么连接属性的方法,它显然是自己决定进行内部连接的。 (另一个问题是连接线左侧的小无穷大符号表示Access认为这是一对多的关系,但由于链接的字段是主键,所以它是一对一的,如图所示在上面的第一张图片中。)
Microsoft 在以下位置提供有关此过程的文档:
- ALTER TABLE statement (Microsoft Access SQL)
- CONSTRAINT clause (Microsoft Access SQL)
- Modify a table's design using Access SQL
- Create Foreign Key Relationships
还有关于如何在 DAO 中而不是 SQL 中执行此操作的文档:
我没有看到任何允许我选择连接属性的内容。
我需要表关系是一个外连接,以便它包括一个表的所有记录,并且只包含第二个表中主键相等的记录。如何在 VBA 中创建这种关系?
【问题讨论】:
标签: sql vba ms-access constraints table-relationships