2

在Access中,您可以設置表之間的一對多關係。訪問中顯示的SQL Server關係

然後在一個表中有一個(+)符號鏈接到第二個表中的許多行。

當你點擊(+)簽署顯示了所有表2中所涉及到表1

反正有做與SQL Server作爲數據存儲和訪問鏈接表類似的行?

我有我在SQL Server表中的數據設置,並希望使用Access 2010作爲前端。

回答

1

我不相信你可以使Access自動啓用ODBC鏈接表的子數據表(+)功能。

它與本地訪問表的方法是,SubdatasheetName屬性默認爲[汽車]。並且[Auto],Access將查看定義的關係並選擇相關表作爲子數據表。

對於SQL Server鏈接表,Access不檢查在SQL Server中定義的關係並選擇一個表作爲子數據表。您可以在Access中重新定義SQL Server鏈接表之間的關係(雖然它不提供強制參照完整性),但它仍不會應用子數據表。你可以手動設置SubdatasheetName鏈接主鏈接子字段從你的鏈接表的設計視圖性能,但要等到關閉表,只有持續。

我知道通過使用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 

最後,子數據是有用的,但他們帶來的其他挑戰。請參閱SubdatasheetNameProblem properties開始的部分。

0

還有一種方式如何在UI做到這一點:在主表(在VBA例如表產品)

  • 打開表定義(設計圖)。忽略警告。
  • 打開的表
  • 輸入屬性的設計視圖屬性窗口子數據表名稱文本Table.Categories(子數據表)
  • 的連接字段(LinkMasterField和鏈接子字段)應該得到自動填入使用現有的關係。如果他們不這樣做,填補關係的列名,即類別ID(主+外鍵)
  • 關閉表並保存設計變更

這就是它。