如何解决选择第一记录而不是已定义记录的组合框
第一次在这里问,因为我很困惑!
我有一个带有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事件中,我引用的是表单。如果是这样,则设置表单过滤器,而不要弄乱表单记录源。您的第二个问题是,通过VBA代码更改cbotitle的值时,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都不会以任何可接受的方式显示对其记录源的运行时更改。它是访问方式还是高级方式。在设计时将记录源和表单变量链接起来,然后过滤是我发现可行的唯一方法。我认为为什么无法通过代码触发afterupdate事件的原因类似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。