首页 文章

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

提问于
浏览
0

这让我很生气!我有一个相对简单的表单,只有一个表作为其数据源 . 在该表上有两个用于查找表的外键,这些表可以通过普通的组合框进行编辑,这些组合框本身具有简单的单表行源 . 该表单作为独立的弹出窗体和子窗体非常有效 .

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

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

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

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

我用Google搜索并尝试了各种各样的事情,但无济于事 . 我敢肯定它会变得非常简单,但我只是看不到它,它让我 grab 了一些可怕的东西 .

提前感谢任何建议 .

...一些额外的信息:虽然我无法从组合框中的列表中选择,但我可以在组合框中键入值,然后查找并保存它们 . 最奇特的......我也尝试过没有DoEvents循环,但结果是一样的......

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

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

2 回答

  • 0

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

    要说出来并不容易:

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

    我重新设计了第二个表单,将第三个表单作为子窗体包含在Tab控件上,一切都很好 . 这一切都需要整理,但它基本上有效 .

    唷!真是个马拉松!

  • 0

    我确定那里的每个人都已经知道,但我似乎找到了另一种暂停表单执行的方法,而另一种表单执行时没有使用DoEvents / Sleep循环 . 它的工作原理也很简单:

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

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

相关问题