背景:
我有一个子表格(数据表)我使用数据表复选框更新后更新事件:
为避免RecordLock投诉,我在上述各项之后插入了SendKeys "+{Enter}", True
来保存更新 - 有更好的方法吗?
接下来我需要重新查询子表单以显示新插入的记录并使用书签(?)来保留原始记录的光标位置(插入的记录将是相邻的)。子表单数据表记录集基于查询。
问题:
在子表单的afterupdate事件中,使用Forms![ParentForm].[SubForm].Form.Requery
不会产生错误,但会打开代码窗口,并以黄色突出显示该行。
接下来尝试,从子窗体的afterupdate事件中,我尝试使用Forms![ParentForm].[SubForm].Form.Requery
将焦点设置为ParentForm之前的控件,但是我得到了类似的〜无声错误〜如上所述。 / p>
从同一子表单中请求子表单的正确方法是什么?
谢谢!
答案 0 :(得分:2)
你为自己制造的方式太难了。以下是如何从按钮单击复制记录。没有锁,没有查询,并且自动更新表单:
Private Sub btnCopy_Click()
Dim rstSource As DAO.Recordset
Dim rstInsert As DAO.Recordset
Dim fld As DAO.Field
If Me.NewRecord = True Then Exit Sub
Set rstInsert = Me.RecordsetClone
Set rstSource = rstInsert.Clone
With rstSource
If .RecordCount > 0 Then
' Go to the current record.
.Bookmark = Me.Bookmark
With rstInsert
.AddNew
For Each fld In rstSource.Fields
With fld
If .Attributes And dbAutoIncrField Then
' Skip Autonumber or GUID field.
ElseIf .Name = "SomeFieldToHandle" Then
rstInsert.Fields(.Name).Value = SomeSpecialValue
ElseIf .Name = "SomeOtherFieldToHandle" Then
rstInsert.Fields(.Name).Value = SomeOtherSpecialValue
ElseIf .Name = "SomeFieldToSkip" Then
' Leave empty or with default value.
ElseIf .Name = "SomeFieldToBlank" Then
rstInsert.Fields(.Name).Value = Null
Else
' Copy field content.
rstInsert.Fields(.Name).Value = .Value
End If
End With
Next
.Update
' Go to the new record and sync form.
.MoveLast
Me.Bookmark = .Bookmark
.Close
End With
End If
.Close
End With
Set rstInsert = Nothing
Set rstSource = Nothing
End Sub
如果按钮位于父表单上,请将Me
替换为:
Me!NameOfYourSubformControl.Form
在AddNew
和Update
之间,您可以修改和插入代码,以调整不应复制的某些字段的值。