这是我之前提交过的一个单独的问题并得到了一些帮助。
我正在尝试使用一些检查表单上的数字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
答案 0 :(得分:0)
好吧,我该被诅咒!我发现了问题。
我不知道这是语法问题还是逻辑问题,但我从{<1}}删除了<{1}}
.value
所以,这是新的,完全正常的代码:
If .Column(1, i).Value = ParID Then