2016-09-06 108 views
1

我試圖弄清楚我在哪裏出錯了。使用VBA比較設置Access組合框的值

我有兩個表RequestParentRequest只能有一個相關的Parent記錄,但Parent可以有很多相關的Request記錄。所以我有Request表包含Parent的外鍵。

我有一個未綁定的組合框,使用查詢(包含公司名稱和ID綁定到列0和1,列1被隱藏以便用戶看不到數字ID)從Parent表中提取數據。它沒有綁定,因爲表單的記錄集有很多複雜的連接,因此無法更新該表單上的任何內容。所以我在組合框中創建的「關於修改」活動,以填補在使用一個QueryDef SQL更新查詢外鍵:

Private Sub Combo217_Change() 
Dim ComboID As String 
Dim ReqID As Long 
Dim dbs As DAO.Database 
Dim qdfUpdateParentExisting As DAO.QueryDef 

ReqID = Me.RequestID.Value 
ComboID = Me.Combo217.Column(1) 

Set dbs = CurrentDb 
Set qdfUpdateParentExisting = dbs.QueryDefs("UpdateReqExistingParent") 
qdfUpdateParentExisting.Parameters("VBParent").Value = ComboID 
qdfUpdateParentExisting.Parameters("VBReqID").Value = ReqID 
qdfUpdateParentExisting.Execute 
qdfUpdateParentExisting.Close 
DoCmd.Save acForm, "DT2" 
Me.Requery 

End Sub 

這只是正常,但一旦你退出的形式和重新輸入,組合框中的值爲空,我希望它包含與所選的值相同的值。

我一直試圖做一個「加載事件」與下面的代碼,但它不是在得到這個工作將是非常美妙的工作

Dim ParID 
ParID = Me.ParentID.Value 
Me.Combo217.Column(1).Value = ParID 

任何輸入!

回答

1

因爲它綁定到特定的列可以循環通基於匹配的ID設置的值

編輯 - 行索引添加到列值

Dim i as Integer 

With Combo217 
    For i = 0 To .ListCount - 1 
     If .Column(1, i).Value = ParID Then 
     .Value = .ItemData(i) 
     Exit For 
     End If 
    Next 
End With 
+0

我現在有列0綁定到「公司名稱」和第1列(隱藏)綁定到父表的ID。如果我使用你的方法,那麼組合框顯示數字ID而不是公司名稱。所以我想我想顯示列0的值,通過使用列1來選擇它 – mattlore

+0

啊好吧..我改變了我的循環檢查 - 這是否更好? – dbmitch

+0

到達某個地方。它提供了「Object required」錯誤,但它看起來像itemdata在列中看到了正確的值。現在排除故障 – mattlore