我有一个绑定表单,其子表单绑定到不同的recordSource,尽管这些recordSource可以通过字段链接。
我的主窗体和按钮控件中有一个未绑定的文本框控件,其OnClick事件附加了自定义的vba代码。
我想要实现的是这样的:(伪代码以便于阅读)
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中引入了尚未生成其记录的代码 ,它会创建如果您尝试加载其他代码或关闭表单,然后重新加载第一个代码 再次, IT工作!
任何想法为什么会发生这种情况或如何编写解决这种情况的方法?这真让我烦恼。我已经尝试在加载记录之前运行acSaveRecord
和acSave
但结尾仍然是相同的:我无法在最近创建的记录上加载子表单而不首先浏览主表单的记录(这有点愚蠢并且反直觉)
我的诊断可能有误,也可以指出。我对Access和VBA没有太多经验。
答案 0 :(得分:1)
解决方案是添加:
Me!subform.Form.Requery
添加记录后。
表单(或子表单)不会在其记录源中显示新添加的记录,除非它被重新获取(使用Shift + F9或通过代码手动)。