vba - 选择第一条记录而不是定义的记录的组合框
问题描述
第一次在这里问,因为我很难过!
我有一个带有 2 个组合框的 MS Access 表单:第一个组合框 (cboPub) 选择一个发布者,然后过滤第二个组合框 (cboTitle),这工作正常,但是拉出的记录是第一个记录,而不是符合条件的记录.
下面的代码:
Private Sub cboPub_AfterUpdate()
cboTitle = Null
cboTitle.Requery
End Sub
Sub cboTitle_AfterUpdate()
' Find the record that matches the control.
Me.RecordsetClone.FindFirst "[Supplier] = """ & Me![cboTitle] & """"
Me.Bookmark = Me.RecordsetClone.Bookmark
End Sub
我怀疑这是因为这里的行:
Me.RecordsetClone.FindFirst "[Supplier] = """ & Me![cboTitle] & """"
但我不知道要改变什么让它选择正确的记录。
解决方案
一个常见的任务是从表单标题部分中未绑定的组合框中过滤表单详细信息部分中的数据。(不要设置组合框的数据源)我认为这就是你想要做的,因为我在 afterupdate 事件中指的是表单。如果是这样,请设置表单过滤器,而不是弄乱表单记录源。您的第二个问题是当 cbotitle 的值通过 vba 代码更改时,cboTitle 的 afterupdate 事件不会触发。所以把所有的代码放在cboPub中。
Private Sub cboPub_AfterUpdate()
'cboTitle = dlookup("Title", "SomeTable", "SupplierID = " & cboPub.value) 'how I filtered cboTitle
Me.Filter = "SupplierID = " & cboPub.Value
Me.FilterOn = True
End Sub
Private Sub cboTitle_AfterUpdate()
Debug.Print "check the immediate window for how cboTitle's after update event does not fire when cboTitle is updated with VBA"
End Sub
警告:将此视为伪代码;确切的过滤器取决于供应商、出版商和标题在表格和组合框中的关联方式。
解释:我认为 access 背后的程序员故意强迫我们完全在设计时设置表单。无论我尝试了什么,Access 都不会以任何可接受的方式显示对其记录源的运行时更改。它是访问方式或高速公路。在设计时链接你的记录源和表单变量然后过滤是我发现的唯一有效的方法。我认为您无法通过代码触发更新后事件的原因是相似的。
推荐阅读
- php - 会话超时时如何配置重定向 URL - Laravel 5.8?
- excel - 使用自定义格式将 Excel 中的行转换为列
- python - torch.matmul和python内置@运算符做矩阵乘法的区别
- android - Firebase Auth getCurrentUser() 检索已删除的用户
- arrays - vuejs:如何将值作为数组传递给数据?
- c# - goto 语句的行为及其范围是否发生了变化,何时发生变化?
- android - 如何在android中创建自定义号码选择器?
- ios - iOS 应用订阅选项可以对用户隐藏吗?
- neo4j - 使用 Cypher 查询有 N 个朋友在 C 工作的 P
- python - 有效地为数组赋值