ms-access - 在关系视图中,MS Access DDL: 显示外键引用

  显示原文与译文双语对照的内容
0 0

使用ADODB连接对象,我可以在 MS Access ( 欢乐) 中使用 SQL DDL 。 奇怪的是,有时声明外键引用显示在访问关系视图中,这对于可视化非常有用,并且打印出来显示涉众- 但有时它并不会显示 stakeholders 。 例如我创建了雇员 table 和一个 Dep_Policy table,其中包含对雇员( 来自Ramakrishnan图书的示例)的外部键引用。 这在关系视图中显示。 现在我使用相同的DDL创建两个新表,但是将名称改为 cat 和 Dog,作为测试。 只有Dog显示在关系视图中,而不是 cat 。 下面是代码:


Sub createTestSchema()

Dim cnn1 As ADODB.Connection
Dim cmd1 As ADODB.Command

Set cnn1 = CurrentProject.Connection
Set cmd1 = New ADODB.Command

Dim sqlArr As ArrayList
Set sqlArr = New ArrayList
sqlArr.Add ("CREATE TABLE Employees(ssn integer identity(0,1), name text(100), lot text(50), primary key (ssn))")
sqlArr.Add ("CREATE TABLE Dep_Policy(pname text(20), age integer, cost currency, ssn integer, primary key (pname, ssn)," & _
"FOREIGN KEY (ssn) references Employees(ssn) ON DELETE CASCADE)")
sqlArr.Add ("CREATE TABLE Cat(ssn integer identity(0,1), name text(100), lot text(50), primary key (ssn))")
sqlArr.Add ("CREATE TABLE Dog(pname text(20), age integer, cost currency, ssn integer, primary key (pname, ssn)," & _
"FOREIGN KEY (ssn) references Cat(ssn) ON DELETE CASCADE)")
With cmd1
. ActiveConnection = cnn1
. CommandType = adCmdText
 Dim i As Integer
 For i = 0 To sqlArr.size - 1
. CommandText = sqlArr.GetItem(i)
. Execute
 Next
End With
End Sub

如何确保外键引用在关系视图中显示出来? 对于这个测试模式,大多数表出现但在我的实际架构中很少出现。 使用 MS Access 是客户端需求。 ( btw是一个自定义类)

时间: 原作者:

0 0

在早期版本中,右键单击"关系"窗口中的工作区,然后选择"全部显示"。

显示所有表及它的关系不是( 不是) 默认值,因为在有 500个表的数据库中,图表大多是不可以读的。 实际上,在数据库中,自动显示所有表和关系使图表不可读。 它需要手动地移动一些东西,并且一次只选择一个模式的相关部分。

0 0

我在去年的这个时候问了同样的问题。

简而言之,你必须运行


DoCmd.RunCommand acCmdRelationships
DoCmd.RunCommand acCmdShowAllRelationships

确保图表以你通过DDL建立的关系更新关系图。

原作者:
...