如何在数据表中选择包含新添加记录的行,类似于列表框?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在数据表中选择包含新添加记录的行,类似于列表框?相关的知识,希望对你有一定的参考价值。
以前,我使用ListBox
及其Value
属性,以便从表中选择包含新添加记录的特定行。
这是通过以下方式实现的:
Me.listBox.Value = DLookup("ID", "myTable", searchCriteria)
Me.listBox.Requery
一旦我将记录插入myTable
,我会调用上面的代码来刷新ListBox
并选择包含新记录的行。
我已经切换到Datasheet
,但它没有Value
属性。
我可以调用以下内容来刷新DataSheet
,但显然它没有突出显示包含新记录的行:
Forms!frmMyForm.datasheet_MySheet.Requery
完成我所描述的最佳方法是什么?
谢谢
一种方法是使用书签移动到记录:
With datasheet_MySheet.Form
.RecordsetClone.FindFirst searchCriteria
If Not .RecordsetClone.NoMatch Then
.Bookmark = .RecordsetClone.Bookmark
End If
End With
...其中datasheet_MySheet是父表单上SubForm控件(数据表)的名称。
编辑:说明:
RecordsetClone
是Form's Recordset的副本,其中包含表单的数据。 Recordset的FindFirst
方法使匹配记录成为当前记录(在该Recordset中)。例如。如果searchCriteria
是"ID=6"
那么它将移动到ID为6的记录。将Form的Bookmark
属性设置为Bookmark
的RecordsetClone
属性使得Form上的当前记录(因此明显选择的行)与刚才的相同发现在RecordsetClone
。换句话说,它在克隆中找到记录,然后将数据表的可见位置与克隆同步。
为什么要使用克隆?
为什么使用Form.RecordsetClone.FindFirst
而不是Form.Recordset.FindFirst
?如果没有找到匹配,FindFirst
将移动到第一行(奇怪的是,NoMatch
属性返回False,表示匹配时没有)。对Form.Recordset
的影响是可见的,而对Form.RecordsetClone
的影响不是,所以除非你有匹配,否则你不会移动选定的记录。在您的情况下,这可能或不重要。
以上是关于如何在数据表中选择包含新添加记录的行,类似于列表框?的主要内容,如果未能解决你的问题,请参考以下文章
遍历 pandas 数据框中的行并匹配列表中的元组并创建一个新的 df 列