首页 > 解决方案 > 添加具有相同参考 ID 的附加记录

问题描述

我在 Access 2013 中工作。我正在构建表单来指导/限制现场人员的数据输入。Vistable 保存访问记录:每次访问一条记录,包括日期、开始/停止时间、其他访问特定信息。Obstable 保存每次访问的观察结果,并且该表以 1 Vistable : Many Obstable 关系相关。

我已经建立了一个表格来输入新的访问,并且有一个用于输入相关观察的按钮。单击按钮保存访问记录,设置临时变量 (tempVisID),当打开 Obsform 时,设置 VisID 字段 = tempVisID,以便在基础表中链接父记录和子记录。

输入观察后,可以将 obsform 退出回 Visform 或添加另一个观察,与上一个不同。在这种情况下,Obstable.ID 字段应该增加,但我需要 Obstable.VisID 字段保持 = tempVisID,因为这两个观察应该链接回相同的访问记录。但是,到目前为止,我尝试过的所有操作都会引发错误或自动增加 VisID。即,如果我只是去一个新的 obs 记录,它会增加,尽管我认为它不应该(基础表中的字段是文本字段,没有索引,不是自动编号),如果我尝试使用默认值= tempVisID 或其他任何东西(到目前为止)它会抛出一个错误,说“您输入的值对此字段无效”,然后我被迫中止输入屏幕。最近的一次尝试是我使用了一个宏来 GoToRecord=New,

关于如何让 VisID 保持不变的任何建议?我很茫然,我敢肯定这是我想念的简单的东西。重要的提示。我不知道或不了解 VBA,目前没有时间尝试将其添加到我的工具箱中。我一直在使用宏和表达式。

标签: formsms-access-2013

解决方案


这就是我最终决定的。完成访问数据输入后,单击“添加观察”按钮。这个动作做了三件事:1. 设置一个 TempVar = Visit.ID(访问表的主键),2. SaveRecord 将访问记录存储在访问表中(否则我收到一个错误,说我在 Observations 中的子记录没有访问中的连接父母),以及 3. 打开 AddObservations 表单。然后使用默认值控件将 AddObservation.VisID 字段设置为上面设置的 TempVar。然后用户输入其余数据并退出表单返回访问,或单击“AddAnotherObs”按钮。因此,我的解决方法是:AddAnotherObs 只需关闭观察表单,然后立即重新打开它。由于 TempVar 没有改变,默认值重置为相同的值,允许我在同一次访问中添加第二个观察结果。我尝试的任何其他操作都会增加 Visit.ID 字段,然后生成错误,因为没有具有该 ID 的父记录(如果有,那将是错误的父记录!)。

抱歉,如果我的原始帖子没有像您可能喜欢的那样得到很好的解释。我试图让它尽可能清楚。我认为我没有达到可以发布屏幕截图之类的水平。


推荐阅读