我正在Access 2013中工作。我正在构建表单以指导/约束现场人员的数据输入。 Vistable保留访问记录:每次访问一个记录,包括日期,开始/停止时间以及其他特定于访问的信息。 Obstable保留每次访问的观察结果,并且该表与1 Vistable:许多Obstable关系相关。
我已经建立了一个表单来输入新的访问,并且有一个用于输入相关观察值的按钮。单击按钮保存访问记录,设置一个tempvar(tempVisID),打开Obsform时,将VisID字段设置为tempVisID,以便在基础表中链接父记录和子记录。
输入观察值后,可以退出该obsform回到Visform或添加另一个观察值,该观察值与上一个不同。在那种情况下,Obstable.ID字段应该增加,但我需要Obstable.VisID字段保持= tempVisID,因为两个观察值都应链接回同一访问记录。但是,到目前为止,我尝试过的所有操作都会引发错误或自动递增VisID。即如果我只是去一个新的obs记录,它会增加,尽管我认为它不应该(基础表中的字段是一个文本字段,没有索引,不是自动编号),并且如果我尝试使用默认值= tempVisID或其他任何东西(到目前为止),它会引发一个错误,提示“您输入的值对该字段无效”,然后我被迫中止输入屏幕。我最近的尝试是使用一个宏来设置GoToRecord = New,并将VisID的SetProperty的值设置为tempVisID。
关于如何使VisID保持不变的任何建议?我很茫然,我确定这是我所缺少的简单事物。重要的提示。我不了解或不了解VBA,目前没有时间尝试将其添加到我的工具箱中。我一直在使用宏和表达式。
答案 0 :(得分:0)
这就是我最终解决的问题。输入完访问数据后,单击“添加对象”按钮。该操作执行三件事:1.设置一个TempVar = Visit.ID(Visit表的主键),2. SaveRecord将访问记录存储在Visit表中(否则,我会看到一条错误消息,说我在Observations中的子记录没有访问中的关联父级),然后3.打开“添加观察”表单。然后,使用默认值控件将AddObservation.VisID字段设置为上面的TempVar。然后,用户输入其余数据,并退出表单返回“访问”,或单击“ AddAnotherObs”按钮。因此,我的解决方法是: AddAnotherObs只需关闭“观察”表单,然后立即将其重新打开。由于TempVar尚未更改,因此默认值重置为相同的值,这使我可以在同一访问中添加第二个观测值。我尝试做的其他任何事情都会增加Visit.ID字段,然后生成一个错误,因为没有具有该ID的父记录(如果存在,那将是错误的父!)。
很抱歉,如果我对原始帖子的解释不如您所愿。我试图使它尽可能清晰。我认为我无法发布屏幕截图等。