组合框级联效应不适用于不同的行

问题描述 投票:0回答:2

我在子窗体上有两个组合框。第一个组合框用于填充第二个组合框。这些放在表单的详细信息部分。我希望它们以这种方式工作:当我从第一个组合框中选择任何值时,我希望相同行的第二个组合框由相关值填充。

截至目前,我已经尝试实现这一点,当我从第1行的第一个组合框中选择任何值时,我看到同一行的第二个组合框被填充但是当我继续选择第一组组合框中的值时,我看到了第二组组合框中的值变化或变为空。

这是代码:

第一个组合框是cboRCMTask:

Private Sub cboRCMTask_AfterUpdate() 
    Me.cboRCMTaskOptions.RowSource = "SELECT ID, RCMTaskOptions FROM tblRCMTaskOptions WHERE RCM_ID=" & Me.cboRCMTask.Column(0) & ";" 
    Me.cboRCMTaskOptions = Me.cboRCMTaskOptions.ItemData(0) 
    Me.cboRCMTaskOptions.Requery 
End Sub 

cboRCMTaskOptions是第二个组合框。

form_current事件:

Private Sub Form_Current() 
    Me.cboRCMTask.RowSource = "SELECT ID, RCMTask FROM tblRCMTask;" 
    If IsNull(txtRCM_ID) Then 
        Me.cboRCMTask = Me.cboRCMTask.ItemData(0) 
    End If 
    Me.cboRCMTaskOptions.RowSource = "SELECT ID, RCMTaskOptions FROM tblRCMTaskOptions WHERE RCM_ID=" &    Me.cboRCMTask.Column(0) & ";" 
    If IsNull(txtRCMOption_ID) Then 
        Me.cboRCMTaskOptions = Me.cboRCMTaskOptions.ItemData(0) 
    End If 
End Sub 
ms-access combobox ms-access-2007 filtering access-vba
2个回答
1
投票

根据您的描述,您使用的是连续表单。虽然看起来连续形式有很多行,但从编码的角度来看,你可以认为它只有一行,即当前行。我怀疑组合2的控件源是组合中的隐藏数字列,当您更改组合的行源时,无法再找到可见行,因此无法显示。您将需要提供用于编辑的弹出窗体,或者用于存储窗体值的文本框以及用于编辑该值的稍微狡猾的组合。您可以使用条件格式来改善外观。


1
投票

在第一段代码中,将代码转移到on_click事件。我不确定你想要通过ItemData的引用实现什么,但我认为这是不必要的,注释掉那一行。

类似地,Form_current事件中的第三行到最后一行替换为requery。

© www.soinside.com 2019 - 2024. All rights reserved.