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

Access 2007 Form Combo Box not accepting item from list

这让我抓狂!我有一个相对简单的表单,只有一个 table 作为它的数据源。在那个 table 上有两个外键来查找 tables,它们是 editable 通过普通的组合框,它们本身有简单的单个 table 行源。该表单作为独立的弹出式表单和子表单可以很好地工作。

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

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

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

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

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

提前感谢您的任何建议。

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

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

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

经过多次试验,我找到了问题的原因:

很难用语言表达但是:

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

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

呸!真是一场马拉松!

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

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

"Zut alors!" 正如他们在这里所说的!