通过 VBA SQL 更新 MS Access 不可更新记录集表单控件

问题描述 投票:0回答:1

我有 MySQL ODBC 数据源。我有数据表视图表单或 MySQL 视图,它们是通过连接 3 个表并汇总一些数据(总计)而构建的。 假设我的订单视图中包含小计,我需要在简单的数据表视图中查看这些订单的完整列表及其摘要。 在此数据表视图中,我有

cmb
order_route
,它们是
routes
MySQL ODBC 表的查找字段。 由于我的 MySQL 视图中的分组数据,我无法对此视图进行任何直接更新。没关系。 我想要做的是 - 我想将此
cmb
列的控制源保留为
vwOrdersDetails
.
route_id
但将行源设置为 SELECT
routes
.
id
,... FROM 路由表。 所以到目前为止,一切都很好 - 我有包含订单及其摘要的网格,并且我有可以展开并选择我想要的路线的组合框。 挑战是当我选择此组合框的值时运行自定义 VBA SQL。我需要禁用此控件的默认更新行为并让它运行我的自定义 VBA 事件。现在我可以运行此 VBA 事件并更新路由,但我不知道如何禁用该内置更新行为,因为它正在尝试更新不可更新的记录集。 附: - 不!我不想制作没有摘要的可更新记录集。我不能强迫用户打开每条记录的配置文件视图只是为了更新路线,因为它需要太多的点击。

类似主题:VBA 访问:如何将可更新记录集链接到可更新 FORM 并将更改保存在 SQL Server 中

enter image description here

mysql vba ms-access
1个回答
0
投票

我知道迟到的答案,但在 SQL Server 上,我通过在包含数据库中聚合的视图上创建 INSTEAD OF UPDATE 触发器来解决这个问题。 TSQL 中的语法如下所示。

CREATE TRIGGER [AUTH].[tr_Q_SubAccounts_DELETE] 
ON  [AUTH].[Q_SubAccounts]
INSTEAD OF UPDATE
AS 
BEGIN

SET NOCOUNT ON;

IF UPDATE(Title)
    BEGIN
        UPDATE SA
        SET 
        SA.Title = I.Title
        FROM 
        Inserted I
        JOIN [AUTH].T_SubAccounts SA ON I.GUID = SA.GUID
    END
END

问题在于 MySQL 不允许 INSTEAD OF 触发器,但也许 MySQL 中的数据库级别可能存在另一种构造来模仿这种行为。

这是一个完全不同的主题,您可能应该在实现之前阅读它,但我广泛使用这种模式。

© www.soinside.com 2019 - 2024. All rights reserved.