这是一个单独的问题,与我之前提交的一个问题有一些帮助。Object with Combobox with With语句
我试图使用一些检查表单上的数字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
再次同样的错误
最后我试图显式声明组合框上的t他形成它源自:
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
当通过步进它是否检查了该行中每个项目的所有值?例如; “我”保持正确的行号吗? “.Value”值是否正确? 'ParID'是一样的吗? – David
它不会一步一步地继续在错误行上挂起,但是'i'确实保存了正确的行号,'.Value'确实包含了正确的值,'ParID'的确包含了正确的数字ID 。 – mattlore