在 Access 中,您可以设置表之间的一对多关系。
然后在一个表中有一个 (+) 符号,它链接到第二个表中的许多行。
当您单击 (+) 符号时,它会显示表 2 中与表 1 相关的所有行。
无论如何,是否可以使用 SQL Server 作为数据存储和访问链接表做类似的事情?
我在 SQL Server 表中设置了数据,并希望使用 Access 2010 作为前端。
在 Access 中,您可以设置表之间的一对多关系。
然后在一个表中有一个 (+) 符号,它链接到第二个表中的许多行。
当您单击 (+) 符号时,它会显示表 2 中与表 1 相关的所有行。
无论如何,是否可以使用 SQL Server 作为数据存储和访问链接表做类似的事情?
我在 SQL Server 表中设置了数据,并希望使用 Access 2010 作为前端。
我不相信您可以使 Access 自动启用 ODBC 链接表的子数据表 (+) 功能。
它与本机 Access 表一起使用的方式是SubdatasheetName属性默认为[Auto]。使用[Auto],Access 将查看定义的关系并选择相关表作为子数据表。
对于 SQL Server 链接表,Access 不会检查 SQL Server 中定义的关系并选择要用作子数据表的表。您可以在 Access 中再次定义 SQL Server 链接表之间的关系(尽管它不提供强制参照完整性),但它仍然不会应用子数据表。您可以从链接表的设计视图中手动设置SubdatasheetName、LinkMasterFields和LinkChildFields属性,但这只会持续到您关闭表。
我知道得到接近你想要的东西的唯一方法是使用 VBA 来改变TableDef
. 在此示例中,产品和类别都是指向 SQL Server 表的 ODBC 链接。
Dim db As DAO.database
Dim tdf As DAO.TableDef
Dim prp As DAO.Property
Set db = CurrentDb
Set tdf = db.TableDefs("Products")
Set prp = tdf.CreateProperty("SubdatasheetName", dbText, "Categories")
tdf.Properties.Append prp
Set prp = tdf.CreateProperty("LinkMasterFields", dbText, "RefID")
tdf.Properties.Append prp
Set prp = tdf.CreateProperty("LinkChildFields", dbText, "CategoryID")
tdf.Properties.Append prp
Set prp = Nothing
Set tdf = Nothing
Set db = Nothing
最后,子数据表可能很有用,但它们带来了其他挑战。请参阅问题属性中的SubdatasheetName部分。
还有一种方法可以在 UI 中执行此操作:
这就对了。