使用VBA比较设置Access组合框的值

时间:2016-09-06 18:20:28

标签: vba ms-access access-vba

我正在试图弄清楚我在哪里出错了。

我有两张表RequestParentRequest只能有一个相关的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

任何关于让它发挥作用的输入都会很棒!

1 个答案:

答案 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
相关问题