【问题标题】:Multi-Select ComboBox Set Selected Property TrueMulti-Select ComboBox 设置 Selected 属性 True
【发布时间】: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”。第一个参考在哪里/什么是 - 这个表格或者它应该是另一个表格 - 它是一个文本框还是什么?

标签: vba ms-access


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您必须解决问题。开始简单。工作起来。离开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
    

    【讨论】:

    • 我明天上班的时候试试这个。我很抱歉最近没有关注这个问题。谢谢,
    • 我想知道发生了什么。你有没有让函数按照你想要的方式工作?
    【解决方案3】:

    我想在我的计算机上复制该问题。 一旦我让它失败了,我就可以着手修复它。 我同意韦恩的观点,因为可能有一个

    具有 ID 的 Persons_Form

    还有一个

    拥有 Form_Load 的我(表单),

    哪个表格有人物组合框?和 那组组合在哪里填充? 是什么触发了这个 Form_Load? 这些东西从代码片段中并不明显, 你能发布一个可运行的片段吗?

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

    tkx,

    3/15 20:40 周六晚上 感谢您提高对该问题的了解。 现在我对表格有疑问,所以 请运行 DatabaseTools / Documenter /

    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 并将生成的 url 放入 stackover next 评论中。

    tkx

    【讨论】:

    • 场景是有两种形式。 “FormA”包含一个“Multiselect”“Combobox”(称为“person”),它被分配给一个表“Report”列:“Persons”(多值字段)女巫与表“Person”具有多对多关系“ID”列。用户单击加载“FormB”的“FormA”上的按钮。 “FormB” 允许用户在“人员”表中创建新人员。 "FormB" "OnClose" 会刷新 "FormA" 中的数据,然后自动选择 "person" "multiselect combobox" 中与刚刚在 "FormB" 上创建的新 "person" 的 ID 匹配的条目
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多