Ms access MSAccess-插入后重新查询子窗体?
背景: 我有一个子表单(数据表),我在更新事件后使用数据表复选框进行更新:Ms access MSAccess-插入后重新查询子窗体?,ms-access,Ms Access,背景: 我有一个子表单(数据表),我在更新事件后使用数据表复选框进行更新: 我克隆单击的记录并通过插入查询将其插入到引用的表中 我通过更新查询修改原始记录以区别于插入的记录 为了避免记录锁投诉,我在上述每一项之后插入:SendKeys“+{Enter}”,True,以保存更新-有更好的方法吗 接下来,我需要重新查询子窗体以显示新插入的记录,并使用书签(?)保留原始记录的光标位置(插入的记录将相邻)。子窗体数据表记录集基于查询 问题: 在子窗体的afterupdate事件中,使用Forms![Pa
SendKeys“+{Enter}”,True
,以保存更新-有更好的方法吗
接下来,我需要重新查询子窗体以显示新插入的记录,并使用书签(?)保留原始记录的光标位置(插入的记录将相邻)。子窗体数据表记录集基于查询
问题:
Forms![ParentForm].[SubForm].Form.Requery
不会产生错误,但会打开代码窗口,其中以黄色突出显示的行Forms之前将焦点设置为父窗体上的控件![ParentForm].[SubForm].Form.Requery
,但我遇到了类似的~silent错误~如上所述谢谢 你让这对你自己来说太难了。下面是如何通过单击按钮复制记录。无锁定、无查询和表单自动更新:
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
之间,您可以修改和插入代码,以调整某些字段的值,这些字段不应仅复制。Gustav-谢谢!我将看看这个例子,特别是书签部分。在我的实例中,该事件是由子窗体数据表上的复选框上的afterupdate事件与父窗体上的按钮上的afterupdate事件触发的。你怀疑有什么问题吗?古斯塔夫-哇。功能完美,甚至内置了调整克隆的选项。如果我能投票支持你的答案+10,我会谢谢伟大的奇怪的是,这种自适应技术非常适合访问,但是您很少会遇到类似的代码。有没有建议在.Update
之后对记录集重新排序,但保留书签?插入的记录显示在数据表的底部,而不是在其他记录中排序。事实发生后,只需在第一条记录处对我进行简单的重新排序。Nevermind-获得:重新排序,然后:me.RecordsetClone.FindFirst