更新带有视图的绑定 ms 访问表单中的外键值

Updating foreign key values in bound ms access form fed with a view

我正在使用 MS Access 2013 前端,它的表单绑定到从视图读取的 DAO 记录集。视图的主键是通过 Access 中的 VBA 设置的,如下所示:

CurrentDb.Execute "CREATE UNIQUE INDEX ID ON View_X (ID) WITH PRIMARY"

视图写在我的 SQL Server 2005 上,我通过 ODBC 连接到它,并通过 DAO 记录集绑定到表单,如下所示:

Set rsM = DB.OpenRecordset("View_X")

Set Me.Recordset = rsM

Everythink 很好用,但问题是:

假设基础视图如下 SQL:

Select
  Tbl_Main.Quality_Note, Tbl_ProductGroup.PG_Description
From 
  Tbl_Main inner join Tbl_ProductGroup on 
  Tbl_Main.PG_ID = Tbl_ProductGroup.ID

现在我希望能够在我的 Access 表单中有一个组合框,它绑定到我视图中的视图字段 PG_Description,并且它的列表只包含 PG_Description 的可能条目。

由于我的 PK 已定义,因此我实际上可以在表单中编辑记录。 但我遇到的问题是编辑进入字段 Tbl_ProductGroup.PG_Description 并更改条目的描述(不好)但我只想编辑外键值 Tbl_Main.PG_ID (即从 3到 5)

是否有任何 way/trick 我可以在 Access 中使用绑定表单完成此操作,或者我是否必须通过 VBA 中的 SQL 更新记录 "manually"?

任何帮助将不胜感激

由于下拉列表绑定到描述列而不是外键列,因此它唯一可以更新的列是绑定列。您需要使用未绑定的下拉列表并使用事件来更新外键列。

斯托尔岑贝格,

在你的 view_X 添加

Select
  Tbl_Main.Quality_Note,
  Tbl_ProductGroup.PG_Description,
  Tbl_Main.PG_ID
From Tbl_Main inner join Tbl_ProductGroup on Tbl_Main.PG_ID = Tbl_ProductGroup.ID

在您的前端表单中添加一个组合框,以值 PG_ID 为界。作为组合框的 Record/RowSource 添加

SELECT
    Tbl_ProductGroup.ID,
    Tbl_ProductGroup.PG_Description
FROM Tbl_ProductGroup;

最后将组合框的列数设置为2,列宽设置为0; 这将隐藏第一个键列并仅显示产品描述。

如果您遇到困难,请告诉我们。