我有一个用于野外(无网络 - 海洋研究)的数据输入程序。当用户返回办公室时,他们将数据提交给服务器以导入主sql数据库。然后,它创建一个空的访问数据库文件并导出表(DoCmd.TransferDatabase),以便用户具有本地副本用于其非现场研究目的。我要做的是使用DAO.Database.CreateRelation()在新数据文件中重新创建表关系。它一直有效,直到我找到一个需要两个字段作为PK或FK的表。
Table1 Table2 Table3
SampleNumber 1--------M SampleNumber 1--------M SampleNumber
. LineNumber 1--------M LineNumber
. . HookNumber
. . .
. . .
Table1_PK -> SampleNumber
Table2_PK -> SampleNumber+LineNumber
Table3_PK -> SampleNumber+LineNumber+HookNumber
当我在我的函数中使用它时:
Set newRelation = db.CreateRelation(relationUniqueName, _
primaryTableName, foreignTableName, relAttr)
它会返回错误:
3001: Invalid argument.
但只有当我尝试创建上述关系时。所有其他关系都可以正确创建。
有没有办法做到这一点,或者我应该不担心它并让他们弄明白?
答案 0 :(得分:1)
如果您正在寻找创建这样的关系:
然后你应该能够这样做:
Dim cdb As DAO.Database, rel As DAO.Relation, fld As DAO.Field
Set cdb = CurrentDb
Set rel = cdb.CreateRelation("Table2Table3", "Table2", "Table3")
Set fld = New DAO.Field
fld.Name = "SampleNumber"
fld.ForeignName = "SampleNumber"
rel.Fields.Append fld
Set fld = New DAO.Field
fld.Name = "LineNumber"
fld.ForeignName = "LineNumber"
rel.Fields.Append fld
cdb.Relations.Append rel
Set fld = Nothing
Set rel = Nothing
Set cdb = Nothing