Access语句中Access Combobox所需的对象

时间:2016-09-07 15:24:46

标签: vba ms-access access-vba

这是我之前提交过的一个单独的问题并得到了一些帮助。

我正在尝试使用一些检查表单上的数字ID字段的代码(记录集源自复杂连接的查询)并将其与值的组合框进行比较,该组合框未绑定到表单但源自查询并根据表单上的数字ID填写组合框。 组合框的查询有两列绑定“名称”和“ID”,ID字段隐藏。

尝试运行代码时,我一直收到“Object Required”错误,我已经尝试了一切来调试它。奇怪的是:在调试时,代码的每一行都返回/包含它应该的值,因此Access将组合框视为有效对象,但它会继续返回错误。

第一次看到代码:

Dim ParID
Dim i as Integer
ParID = Me.ParentID.Value

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

这不起作用

所以我尝试将组合框放入一个变量并将其特别声明为组合框:

Private Sub Command223_Click()
Dim ParID
Dim Combo As ComboBox
Set Combo = Combo217
ParID = Me.ParentID.Value

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


End Sub

同样的错误

最后,我尝试在源于以下内容的表单上明确声明组合框:

Private Sub Command223_Click()
Dim ParID
Dim Combo As ComboBox
Set Combo = Forms!DT2!Combo217
ParID = Me.ParentID.Value

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


End Sub

任何和所有监视窗口和调试打印都告诉我循环在组合框中看到值,甚至在此行中分配正确的选择:

.Value = .ItemData(i)

但继续出错

哦,它抱怨的是:

If .Column(1, i).Value = ParID Then

1 个答案:

答案 0 :(得分:0)

好吧,我该被诅咒!我发现了问题。

我不知道这是语法问题还是逻辑问题,但我从{<1}}删除了<{1}}

.value

所以,这是新的,完全正常的代码:

If .Column(1, i).Value = ParID Then