我有一个主表和多个其他表,我想将每个表链接到主表的一行。
主表“数据”由列(名称,x,y)组成,其中“名称”是主键,所有值都是唯一的。
其他每个表都有列(Name2,z),其中“Name2”的值在每一行中相同,也对应于表名。
我想让每个表成为“数据”的子数据表,其中“数据”中的每一行都显示表中与其名称对应的值。 (即姓名=姓名2)
下面是我到目前为止所做的,但代码不起作用,因为linkchildfields和linkmasterfields需要从子窗体运行。(?) 一旦代码到达linkchildfields行,我得到的错误是“找不到属性”。
我将成为数据库的唯一用户。 简单地说,我正在寻找一种方法来自动化将一个表设置为另一个表的子数据表的过程。我可以直接从访问表手动执行此操作,但我希望将其自动化为新表已创建,需要设置为主表的子数据表。
感谢。
Sub STS()
Dim i As TableDef
Dim db As Database
Dim tbl As TableDef
Set db = CurrentDb()
Set tbl = db.TableDefs("Data")
For Each i In db.TableDefs
If Left$(i.Name, 4) <> "MSys" Or i.Name <> "Data" Then
tbl.Properties("SubdatasheetName") = i.Name
tbl.Properties("LinkChildFields") = "Name2"
tbl.Properties("LinkMasterFields") = "Name"
End If
Next
End Sub
答案 0 :(得分:0)
为什么要尝试使用代码执行此操作?这个功能通过Relationships的概念内置到Access中,它可能需要2分钟来设置你可能添加的任何新表。看一下这些文档,看看它们是如何完成的,两者都是由微软人员编写的:
Create, edit or delete a relationship
How to define relationships between tables in an Access database