MS Access 2007:虚假 (?) "Database engine cannot find a record in the table..."

MS Access 2007 : Spurious (?) "Database engine cannot find a record in the table..."

我有一个连续表格(表格 X)显示来自 table (Table A) 的行。在 Dbl-Click 一行上,一个单独的表单(Form Y)允许修改关联的行。这个单独的表单有一个子表单,允许输入子 table (Table B) 数据。 table B 上有一列约束指向 Table A 的主键。对于任何给定的 Table A 行,Table B 上可能没有任何行.

到目前为止一切都非常普通。现在问题来了:

如果 table B 为空,那么我得到...

“Microsoft 数据库引擎无法在 table 'Table A' 中找到具有关键匹配字段 'Table B constraint column name'

的记录

...表单 Y 关闭后。如果 table B 上有任何行(不一定是当前的 Table A 行)那么就没有问题。我并没有故意尝试写一个没有 Table A 条目的 Table B 行。

有趣的是,如果我在表单 Y 关闭后将 'msgbox'(我常用的第一次调试方法)放入表单 X,那么问题就会消失。我试过在 Form X 中捕获表单错误 3101,但无济于事。我什至尝试通过表单中的 SQL 删除约束并设置子表单记录源。

这一切都很奇怪,我可能做了一些愚蠢的事情,但我看不到。非常感谢你们聪明人的任何帮助 - 我对仅模拟 "msgbox" 没有输入的问题感到沮丧!

尽管这似乎不是一个很好的问题,但我的解决方案也不是很好。我不希望每个 parent 都有一个 child table 记录,所以我删除了 parent/child link 子表单插入表单的位置,我正在设置当我需要记录时 child table 子表单的记录源。

虽然我在其他地方做过类似的事情没有问题,但这似乎是我困难的根本原因。我恢复了 parent / child link,删除了我的手动记录源内容并将子表单的记录源设置为 child table。我所要做的就是手动处理我不想要的 child table 行,而且一切似乎都正常。

确实...对一个看似毛茸茸的问题的毛茸茸的回答。