2014-01-08 49 views
1

我想在Form_Load()的多选组合框中选择Persons_Form!ID中的ID多选组合框设置选定属性True

下面的代码执行得很好。消息框确实会弹出;但是,该值始终为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 
+0

把代码打破在 “如果(.ItemData(x)的像......” 行,然后将鼠标悬停在这两个 “.ItemData(X)” 和“形式!Persons_Form!ID .Value“,它会告诉你Access认为这两个值是什么。然后按F8逐句通过代码,并检查每个循环的值。你可能会马上看到你做错了什么,或者Access不喜欢什么。 –

+0

访问“喜欢”代码。 IF语句中的代码在正确的时间执行。 x被分配给正确的索引。 Selected(x)确实返回复选框的当前状态,赋值语句不会导致错误。然而在赋值语句Selected(x)之​​后仍然返回false。 – Roger

+0

所以你说它击中设置的行.Selected(x)= true,它仍然弹出一个框,说.Selected(x)= false? –

回答

1

对不起,我不能评论我的低代表尚未。但是对于person对象,.MultiSelect属性显示什么?如果它为零,则不能将多个选择设置为true。

1

你必须排除故障。开始简单。处理。对于初学者,请留下SetFocus

Private Sub Form_Load() 
    person.Selected(1) = True 
    MsgBox (person.Selected(1)) 
End Sub 

此外,添加一个布尔变量。使用变量可以清除许多混乱。

Private Sub Form_Load() 
    Dim booSelected As Boolean 
    person.Selected(1) = True 
    booSelected = person.Selected(1) 
    MsgBox booSelected 
End Sub 
+1

明天当我开始工作时,我会试试这个。最近我对这个问题缺乏关注表示歉意。谢谢, – Roger

+0

我不知道发生了什么。你有没有获得按照你想要的方式工作的功能? – Smandoli

1

我想复制我的电脑上的问题。 一旦我得到它失败,然后我可以修复它。 我会与韦恩同意,因为有可能是有在Form_Load一个

Persons_Form有一个ID

我(的形式),

形成具有人组合框?和 该组合组合在哪里? 是什么触发了这个Form_Load? 这些东西不代表代码片段, 你可以发布一个可运行的片段吗?

我会使用Northwind来填充我的人员组合,因此不需要提供任何私人数据。 然而,很高兴知道ID 中的模式类型以及组合框中的ItemData类型。

TKX,

3/15 20:40星期六有限 感谢有关该问题的知名度大增。 现在我有表的问题,所以 请运行DatabaseTools /文档管理/

on Tables: Person and Report 
and set Include-for-fields to the last radio(all items) 

and on Forms: "FormA" 
and set Include-for-Sections-and-Controls both Names&Properties 

然后,您可以把输出表信息 ,只是“人”的控制信息到一个txt文件 并上传到在某处 像http://www.filedropper.com/free-file-hosting.php 并将生成的网址放入下一条评论。

TKX

+0

这种情况是有两种形式。 “FormA”包含一个“Multiselect”“Combobox”(称为“人物”),它被分配到一个Table“Report”列中:“Person”(MultiValue Field)女巫与表“Person”具有多对多的关系。列“ID”。用户点击加载“FormB”的“FormA”上的按钮。 “FormB”允许用户在“Person”表中创建一个新人。 “FormB”“OnClose”将刷新“FormA”中的数据,然后自动选择与“FormB”中刚刚创建的新“person”的ID相匹配的“person”,“multiselect combobox” – Roger