【发布时间】:2014-01-08 15:31:39
【问题描述】:
我想在Form_Load() 的多选组合框中从Persons_Form!ID 中选择ID。
下面的代码执行良好。消息框确实会弹出;p 但是该值始终为 false,并且即使将其设置为 True,也不会在组合框中选中复选框。
我的预期行为是在代码运行后对其进行检查,并在 MsgBox 中返回 True。为了获得预期的行为,我需要进行哪些更改?
Private Sub Form_Load()
If ID.Value >= 0 Then
Beep
Else
Beep
With person
.SetFocus
For x = Abs(.ColumnHeads) To (.ListCount - 1)
If (.ItemData(x) Like Forms!Persons_Form!ID.Value) Then
.Selected(x) = True
MsgBox (.Selected(x))
End If
Next
End With
End If
End Sub
【问题讨论】:
-
在“If (.ItemData(x) Like...”行放置一个代码中断,然后将鼠标悬停在“.ItemData(x)”和“Forms!Persons_Form!ID”上.Value”。这将告诉您 Access 认为这两个值是什么。然后按 F8 单步执行代码,并检查每个循环的这些值。您可能会立即看到您做错了什么,或者 Access 没有不喜欢。
-
访问“喜欢”代码。 IF 语句中的代码确实在正确的时间执行。 x 被分配给正确的索引。 Selected(x) 确实返回复选框的当前状态,并且赋值语句不会导致错误。但是在赋值语句 Selected(x) 之后仍然返回 false。
-
所以你说它碰到了设置 .Selected(x) = true 的行,它仍然会弹出一个框,上面写着 .Selected(x) = false?
-
是的,这正是它的作用。
-
为澄清起见,您的第一行代码引用“ID.Value”,然后您引用“Forms!Persons_Form!ID.Value”。第一个参考在哪里/什么是 - 这个表格或者它应该是另一个表格 - 它是一个文本框还是什么?