MS-Access 表单:奇怪的行为

MS-Access form: weird behavior

我有一个绑定表单,其中一个子表单绑定到不同的 recordSource,尽管这些 recordSources 可以通过一个字段链接。

我的主窗体中有一个未绑定的文本框控件和一个按钮控件,自定义 vba 代码附加到它的 OnClick 事件。

我想实现的是这样的:(为了方便阅读伪代码)

private sub button_Click()
    'Find the record with the content of the text-box control as its value in FieldA
    find(mainForm.RecordSource, fieldA, text-box.value) 
    if not found then
    'Create a record in the subform.recordSource with PK value = text-box.value
        createDefaultRecord(subform.Form.RecordSource,text-box.value)
    end if
    'load the values in the record in the main record source onto the record in the subform recordSource
    Me!subform.Form.value = mainForm.recordThatMatched.value
Exit Sub 

我确实让它工作了,但有一点不便:如果我引入一个代码还没有生成它的记录 在 subform.RecordSource 中创建它,然后 加载它失败 但是 如果您尝试 加载不同的代码或关闭表单,然后再次重新加载第一个代码成功!

知道为什么会发生这种情况或如何针对这种情况编写解决方法吗?这真的很烦我。在加载记录之前,我曾尝试 运行 acSaveRecordacSave 但结尾保持不变:如果不首先浏览主窗体的记录,我无法在子窗体上加载最近创建的记录(这有点愚蠢和违反直觉)

我的诊断可能是错误的,也可以指出来。我对 Access 和 VBA.

没有太多经验

解决方案是添加:

Me!subform.Form.Requery 

添加记录后

表单(或子表单)不会在其记录源中显示新添加的记录,除非重新查询(使用 Shift+F9 手动或通过代码)。