这让我很生气!我有一个相对简单的表单,只有一个表作为其数据源。在该表上有两个用于查找表的外键,这些表可以通过普通的组合框进行编辑,这些组合框本身具有简单的单表行源。该表单作为独立的弹出窗体和子窗体非常有效。
但是,当我从另一个表单中打开它并等待用户使用以下命令完成编辑时
DoCmd.OpenForm "ACCategory", , , , acFormEdit, , wargs
Forms!ACCategory.SetFocus
Do While CurrentProject.AllForms("ACCategory").IsLoaded
Sleep 100
DoEvents
Loop
我无法从上述组合框中选择值。表单的On Load事件中有逻辑,它应用过滤器并禁用一些不相关的控件,但删除此代码对结果没有影响(显然,除了显示错误的记录)。我可以毫无问题地编辑表单上的其他数据;它只是组合框。
我用Google搜索了&尝试了各种各样的事情但无济于事。我确信它会变得非常简单,但我只是看不到它而且它让我感到非常可怕。
提前感谢任何建议。
...一些额外的信息:虽然我无法从组合框中的列表中选择,但我可以在组合框中键入值,它会找到&拯救他们。最奇特的......我也尝试过没有DoEvents循环,但结果是一样的......
...更多附加信息:我已经重新设计了我的主表单并简化了很多东西,并创建了一个更简单的表单版本,结果完全相同!我尝试从表中取消绑定表单并手动完成所有文件(因此删除过滤器),但它仍然无法正常工作。当然,我并不是唯一一个发现这个问题的人?
...更多信息:我虽然可能是文件缓冲问题,因为我正在创建一个默认记录,该记录在主窗体中创建并传递给要编辑的麻烦形式。但事实并非如此;我已经通过了现有记录,并且存在同样的问题。也许是在DoEvents循环中从弹出窗口调用弹出窗口?谁知道?
答案 0 :(得分:0)
经过多次实验,我找到了问题的原因:
言语并不容易,但是:
如果表单在DoEvents / Sleep循环中调用第二个表单,而第二个表单从另一个DoEvents / Sleep循环中调用第三个表单,则组合框在第三个表单中无法正常工作。
我重新设计了第二个表单,将第三个表单作为SubForm包含在Tab控件上,一切都很好。这一切都需要整理,但它基本上有效。
唷!真是个马拉松!
答案 1 :(得分:0)
我确定那里的每个人都已经知道了,但我似乎找到了另一种暂停表单执行的方法,而另一种表单执行时没有使用DoEvents / Sleep循环。它的工作原理也很简单:
DoCmd.OpenForm "<YourFormName>", , , , , acDialog, wargs
&#34; Zut alors!&#34;正如他们在这里说的那样!