MS 访问更新后 - 另一个选项卡中的新记录
Posted
技术标签:
【中文标题】MS 访问更新后 - 另一个选项卡中的新记录【英文标题】:MS access After update - new record in another tab 【发布时间】:2018-01-12 00:10:53 【问题描述】:我尝试找到方法,如何制作 AfterUpdate 事件 - 在另一个(未更新)表中创建新记录。
我的意思是,我有 2 张桌子:
T_Prices:product_ID,m2 和 包装 的价格。
T_AllPrices 包括。 PID、m2、pcg、日期。
在我手动或通过查询更新/更改表 T_Prices 中的价格后,我尝试在 T_AllPrices 中创建新记录的事件、查询或某事。新记录应该包括新价格,所以我不需要使用 [old].[m2]...
我希望这张图片能比我解释得更好。
谢谢大家的帮助
【问题讨论】:
AFAIK,Access 中没有 AFTER TRIGGER 功能,您可以像在 SQL Server 中一样捕获 T_Prices 表上的更新。如果您使用 Access 来编辑您的 T_Prices 表,也许您可以在其中一个表单控件上使用 After Event。这是你的问题吗? 您使用的是什么版本的访问权限?关键字是表触发器。 【参考方案1】:如果您使用的是 MS Access >=2010,请搜索表触发器/数据宏。
可以在此处找到示例答案:https://***.com/a/25722579/1684486
【讨论】:
我看到了这个“builder”...我使用的是 MS Access 2016,所以我使用 :After Update: 创建 T_Price_History(例如) - 所以会有我替换的价格。不是当前价格。这就是我需要的。我尝试过这样的事情 - [old].[field] - 但我需要将 [old] 替换为 [new] 或...idk 之类的东西...我知道 [new] 将不起作用。 :( 如果您尝试过,请发布屏幕和您尝试过的内容。将有助于理解和帮助您。 我下班回家看看。但可能我取消了我的努力,因为它不起作用。无论如何,我使用 :After Update: 并尝试替换 [old] 如下: SetField Name Field1_T_AllPrices •Value = [field1] - 没有 [old] 或 •Value = now().[field1] - 但 now() 可能有效仅与时间/日期 •Value = [field1].[field1] - 相同的一个 - 来自 T_Prices 的 2 倍... - 没有任何效果 嗯,唯一有效的是从原始表 (P) 创建历史表(图像上的 PZC) - 使用 :AFTER UPDATE: 。所以它记录了刚刚被替换的数字。它没有得到当前的数字。 :-/ link【参考方案2】:你不应该直接对表进行操作。
使用绑定到 T_Prices 的 表单(如果您愿意,可以在 Datasheetview 中)。
然后使用表单的AfterUpdate事件在另一个表中创建新记录。
【讨论】:
"你不应该直接对表格进行操作。" - 我没有,我只是尝试准备最简单的方法来创建记录。所以有没有机会创建更新的查询 - 更改 T_Pricess 中的价格,第二个查询在表 T_AllPrices 中创建新记录,然后创建带有字段的表单 - m2 | pcg,去吧!按钮,它启动两个查询? - 我认为这是更困难的方式.. 但有可能吗? “你不应该直接对桌子进行操作” 为什么? 最简单的方法就是使用表格。表格不适用于用户操作。 我尽量避免使用表格进行计算,但这次我不能。这是用户看不到的隐藏计算。但在打开查询 Q_MMA 后,他/她应该看到 - Min - Minimal price for m2 / pcg、Max Price 和 average Price。所有这些计算都必须使用历史上的所有价格,包括。最新的 这就是查询的用途。在表格中,您应该记录 ID、价格和该价格有效的日期。然后您可以检索当前价格以及任何更早日期的价格。以上是关于MS 访问更新后 - 另一个选项卡中的新记录的主要内容,如果未能解决你的问题,请参考以下文章
在没有ajax的情况下更新数据或在网络选项卡中记录请求 - Websockets
在没有 ajax 的情况下更新数据或在网络选项卡中记录请求 - Websockets