ms-access - 通过更改组合框访问 vba 移动到记录
问题描述
我一直有这个问题一段时间,似乎无法破解它。
我创建了一个单独的表单 (frmAdd) 来添加新记录。我想要它做的是当记录被创建到
- 将新记录添加到组合框- 完成
- 获取组合框以显示到新记录- 完成
- 将绑定表单移至新记录- 不工作
该项目肯定在列表中,因为它显示了,但表单仍显示以前的记录。我使用了刷新和重新查询,但无济于事。调用 After_Update 过程的原因是它不会自行运行(这可能是一个线索)
我在下面附上了代码和表单图像。您将在显示表单上看到一个记录显示在组合框中,但另一条记录显示在表单的其余部分。我将不胜感激
Private Sub CboFind_AfterUpdate()
Dim rs As DAO.Recordset
If Not IsNull(Me.cboFind) Then
'Save before move.
If Me.Dirty Then
Me.Dirty = False
End If
'Search in the clone set.
Set rs = Me.RecordsetClone
rs.FindFirst "[ClientID] = " & Me.cboFind
If rs.NoMatch Then
Else
'Display the found record in the form.
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
End If
End Sub
Private Sub cmdNew_Click()
Dim ID As Integer
Dim strSQL As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
DoCmd.OpenForm "frmAdd", , , , , acDialog
If NewRec = True Then
Set db = CurrentDb
strSQL = "SELECT clientid,sname,fname,address,suburb from TBLCLIENTS where sname = '" & pubSName & "' AND fname = '" & pubFName & "' AND address = '" & pubAddr & "' AND suburb = '" & pubSuburb & "'"
Set rst = db.OpenRecordset(strSQL)
ID = rst!ClientID
Me.cboFind.SetFocus
Me.cboFind.Value = ID
Call CboFind_AfterUpdate
Me.cboFind.Requery
Set rst = Nothing
Set db = Nothing
End If
End Sub
解决方案
通常情况下,表单记录集中的书签和该记录集的克隆是不同的。直接使用记录集而不是克隆:
Me.Recordset.FindFirst "[ClientID] = " & Me.cboFind
代替
Set rs = Me.RecordsetClone
rs.FindFirst "[ClientID] = " & Me.cboFind
If rs.NoMatch Then
Else
'Display the found record in the form.
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
推荐阅读
- sql-server - 用于批量插入的从数据块到 sqlserver 的 Sql Apache Spark 连接器:性能问题
- javascript - 将新的子对象添加到 React 中的现有对象
- javascript - 当 Promises 阻塞执行时
- swift - 如何从 UITableViewCell 中关闭 UIViewController
- html - 将 tds 中的图标呈现在与选择/输入元素相同的行上
- javascript - 使用 mockStore 时如何模拟 store.dispatch 函数?开玩笑的
- c - 从文件中的一行打印特定字符的程序
- laravel - 保护 Laravel Sanctum 中其他用户的内部(SPA)路由
- python - 我可以在 pytorch 中访问 DeepLab 的内层输出吗?
- vb.net - 管理动态创建的用户控件事件