【发布时间】:2015-07-07 19:22:40
【问题描述】:
我有表 tbl0 和表 tbl1。 tbl0 有一个由我这样创建的字段“Ticker”组成的主键:
Sub CreatPrimaryKey()
Dim db As Database
Set db = CurrentDb
db.Execute "CREATE INDEX TickerID ON tbl0 (Ticker) WITH PRIMARY;"
db.Close
End Sub
...效果很好。
我通过以下方式确认我拥有主键:
Sub GetPrimaryKeyField()
Call PrimKey("tbl0")
End Sub
Public Sub PrimKey(tblName As String)
'get primary key of tabel
'how to use: Call PrimKey("tbl_DatedModel_2015_0702_0")
'http://bytes.com/topic/access/answers/679509-finding-primary-key-using-vba
'*******************************************
'Purpose: Programatically determine a
' table's primary key
'Coded by: raskew
'Inputs: from Northwind's debug window:
' Call PrimKey("Products")
'Output: "ProductID"
'*******************************************
Dim db As Database
Dim td As TableDef
Dim idxLoop As Index
Set db = CurrentDb
Set td = db.TableDefs(tblName)
For Each idxLoop In td.Indexes
If idxLoop.Primary = True Then
Debug.Print Mid(idxLoop.Fields, 2)
Exit For
End If
Next idxLoop
db.Close
Set db = Nothing
End Sub
即时窗口打印“Ticker”。我不确定“TickerID”发生了什么,但无论如何。我得到一个PK。然后我尝试通过这样做在 tbl0 和 tbl1 之间创建外键关系:
Sub CreateForeignKey()Dim db As Database
Set db = CurrentDb
db.Execute "ALTER TABLE tbl1 " _
& "ADD CONSTRAINT fk_tbl1_tbl0 " _
& "FOREIGN KEY (Ticker) REFERENCES tbl0 (Ticker);"
db.Close
End Sub
当我运行上面的 sub 时,我得到了错误: “索引或关系定义中的字段定义“Ticker”无效”
更新:这个问题的不同之处在于我遇到的问题的一部分是,当我更改表时,我需要在两个表中拥有相同的字段。
【问题讨论】:
-
除了我完全按照 HansUp 在他的回答中建议的那样做(至少看起来我是这样)。我已经看过那个问题/答案了。我错过了什么?
-
您确认 tbl1 包含一个名为 Ticker 的字段吗?
-
你好汉斯普! Don J. 刚刚谈到了这一点。我正在整理如何添加它。
标签: sql vba ms-access ms-access-2013