更新带有视图的绑定 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;
这将隐藏第一个键列并仅显示产品描述。
如果您遇到困难,请告诉我们。
我正在使用 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; 这将隐藏第一个键列并仅显示产品描述。
如果您遇到困难,请告诉我们。