我正在试图弄清楚我在哪里出错了。
我有两张表Request
和Parent
。 Request
只能有一个相关的Parent
记录,但Parent
可以有许多相关的Request
记录。所以我有Request
表包含Parent
的外键。
我有一个未绑定的组合框,它使用查询从Parent
表中提取数据(包含绑定到第0列和第1列的公司名称和ID,第1列被隐藏,因此用户看不到数字ID)。它是未绑定的,因为表单的记录集有很多复杂的连接,使得该表单上的任何内容都无法更新。所以我在组合框上创建了一个“On Change”事件,使用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
任何关于让它发挥作用的输入都会很棒!
答案 0 :(得分: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