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

时间:2012-04-23 04:11:40

标签: ms-access combobox ms-access-2007 filtering access-vba

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

到目前为止,我已经尝试实现这一点,当我从第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 

2 个答案:

答案 0 :(得分:1)

在第一段代码中

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

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

答案 1 :(得分:1)

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