2012-04-23 57 views
0

我在子窗體上有兩個組合框。第一個組合框用於填充第二個組合框。這些放在表單的詳細部分。我希望它們以這種方式工作:當我從第一個組合框中選擇任何值時,我希望同一行的第二個組合框被相關值填充。組合框效果不適用於不同的行

截至目前,我試圖實現這一點,當我從行1的第一個組合框中選擇任何值時,我看到同一行的第二個組合框被填充,但是隨着我繼續從第一組組合框我看到上面第二組組合框中的值改變或變爲空。

下面的代碼:

第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 

回答

1

在你第一代碼段,該代碼轉移到on_click事件。我不確定你想通過參考ItemData來實現什麼,但我認爲這是不必要的,請註釋掉該行。

同樣,Form_current事件中的第三行代替了一個查詢。

+0

我不會推薦點擊事件。如果這是一個單獨的窗體,組合1的當前事件和更新後事件通常是級聯組合。 – Fionnuala 2012-04-23 09:23:07

+0

我不僅希望第二個組合框被重新查詢,而且還要顯示默認值,因爲它在窗體的詳細信息部分中。 – user1175126 2012-04-23 09:47:57

+0

@ user1175126您使用的是連續表單嗎?因爲如果你是這樣的話,這不會發生。 – Fionnuala 2012-04-23 09:52:16

1

從您的描述中,您使用的是連續形式。雖然看起來連續的表單有許多行,但從編碼的角度來看,您可以認爲它只有一行,即當前行。我懷疑組合2的控件來源是組合中隱藏的數字列,當您更改組合的行來源時,無法再找到可見行,因此無法顯示它。您將不得不提供一個彈出窗體進行編輯,或者用一個文本框來存儲表單的值以及稍微不友好的組合以編輯該值。使用條件格式可以改善外觀。

+0

第二個組合框的controlsoruce是RCMOption_ID,它是一個字符串。 – user1175126 2012-04-23 10:09:17

+0

我不知道你是否明白我的觀點。你似乎在使用連續的形式。當您更改當前事件中的第二個組合時,您正在將其更改爲** all **行。 – Fionnuala 2012-04-23 10:12:05

+0

那麼我該如何糾正它呢?如果不是當前事件呢? – user1175126 2012-04-23 11:07:18

相關問題