访问 2007 表单组合框不接受列表中的项目

Posted

技术标签:

【中文标题】访问 2007 表单组合框不接受列表中的项目【英文标题】:Access 2007 Form Combo Box not accepting item from list 【发布时间】:2018-02-09 12:58:59 【问题描述】:

这快把我逼疯了!我有一个相对简单的表格,只有一个表格作为其数据源。该表上有两个用于查找表的外键,可通过普通组合框进行编辑,这些组合框本身具有简单的单表行源。该表单可以作为独立的弹出表单和子表单很好地工作。

但是,当我从另一个表单中打开它并等待用户使用以下命令完成编辑时:

    DoCmd.OpenForm "ACCategory", , , , acFormEdit, , wargs

    Forms!ACCategory.SetFocus
    Do While CurrentProject.AllForms("ACCategory").IsLoaded
        Sleep 100
        DoEvents
    Loop

我无法从上述组合框中选择值。表单的 On Load 事件中有逻辑应用过滤器并禁用一些不相关的控件,但删除此代码对结果没有影响(显然,除了显示错误的记录)。我可以毫无问题地编辑表单上的其他数据;它只是组合框。

我用谷歌搜索并尝试了各种方法,但无济于事。我敢肯定它会简单得令人尴尬,但我就是看不到它,它让我遇到了一些可怕的事情。

提前感谢您的任何建议。

...一些附加信息:虽然我无法从组合框中的列表中进行选择,但我可以在组合框中输入值并找到并保存它们。最奇特的......我也试过没有 DoEvents 循环,但结果是一样的......

...更多附加信息:我重新设计了我的主要表单并简化了很多内容,并创建了一个更简单的表单版本,结果完全相同!我已经尝试从表格中取消绑定表格并手动完成所有文件工作(从而删除过滤器),但它仍然无法正常工作。当然,我不是唯一一个发现这个问题的人吗?

...更多信息:我认为这可能是文件缓冲问题,因为我正在创建一个默认记录,该记录是在主表单中创建并传递给麻烦的表单进行编辑。但是,它不是;我已经通过了现有记录,并且存在同样的问题。也许它是在 DoEvents 循环中从弹出窗口调用弹出窗口?谁知道?

【问题讨论】:

【参考方案1】:

经过大量实验,我已经找到了问题的原因:

难以言表,但是:

如果一个表单在 DoEvents/Sleep 循环中调用第二个表单,而该第二个表单从另一个 DoEvents/Sleep 循环中调用第三个表单,则组合框在第三种表单中无法正常工作。

我重新设计了第二个表单,将第三个表单作为子表单包含在选项卡控件上,一切都很好。这一切都需要整理一下,但它基本上可以工作。

呸!真是一场马拉松!

【讨论】:

【参考方案2】:

我相信那里的每个人都已经知道了,但我似乎找到了另一种方法来暂停表单执行,同时执行另一个不使用 DoEvents/Sleep 循环的表单。它有效,而且也更简单:

    DoCmd.OpenForm "<YourFormName>", , , , , acDialog, wargs

“Zut alors!”正如他们在这里所说的那样!

【讨论】:

以上是关于访问 2007 表单组合框不接受列表中的项目的主要内容,如果未能解决你的问题,请参考以下文章

在 access 2007 中编辑组合框

访问表单组合框 listindex 更改

组合框和列表框不显示文本文件的内容

如果不在列表中,则 MS 访问将项目添加到组合框

在 MS Access 组合框中,如何将表单值用作 where 类

MS Access - 级联第二个组合框不级联