首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS Access OpenForm acDialog选项似乎不起作用

MS Access OpenForm acDialog选项似乎不起作用
EN

Stack Overflow用户
提问于 2013-05-03 03:05:07
回答 2查看 9.7K关注 0票数 0

代码语言:javascript
复制
DoCmd.OpenForm fnew, , , , , acDialog

似乎不会因为某些原因而停止代码执行。是不是因为我从另一个函数中调用了具有此方法的函数,这就把它搞乱了?例如。

代码语言:javascript
复制
func1
<code>
Call func2
    <func2 code>
    DoCmd.OpenForm fnew, , , , , acDialog
<back to func1 code that executes even though i dont want it to until the form closes>
EN

回答 2

Stack Overflow用户

发布于 2013-05-03 05:55:37

acDialog作为OpenForm WindowMode参数时,在关闭窗体之前,您的调用代码不应继续。

OpenForm发生在从您的代码调用的另一个过程中,这并不重要。在此示例中,当运行func1时,直到窗体关闭时才显示MsgBox

代码语言:javascript
复制
Public Function func1()
    Call func2
    MsgBox "form closed"
End Function

Public Function func2()
    'DoCmd.OpenForm "Form3", , , , , acDialog
    DoCmd.OpenForm "Form3", WindowMode:=acDialog
End Function

请注意,只要表单尚未打开,代码就会按照所述方式运行。如果它在“设计视图”中打开,则调用OpenForm仅将其切换到“窗体视图”,而不应用acDialog。如果在窗体视图中打开,则不会发生任何操作,这意味着也不会应用acDialog

如果您希望确保应用acDialog,请确保在调用OpenForm之前关闭窗体...

代码语言:javascript
复制
Public Function func2()
    Const cstrForm As String = "Form3"
    If CurrentProject.AllForms(cstrForm).IsLoaded Then
        DoCmd.Close acForm, cstrForm
    End If
    'DoCmd.OpenForm cstrForm, , , , , acDialog
    DoCmd.OpenForm cstrForm, WindowMode:=acDialog
End Function
票数 5
EN

Stack Overflow用户

发布于 2015-05-18 22:38:04

我在这个问题上挣扎了很长时间,直到我意识到,如果窗体在代码运行时在设计视图中打开,acDialog设置将不起任何作用。在正常运行时,它确实会暂停打开过程中的代码(即没有人尝试设计任何东西)。如果你想测试这个行为,创建一个表单"zzTestForm",并从一个模块中运行:

代码语言:javascript
复制
Public Sub DoThis()

MsgBox "ok, let's go"

DoCmd.OpenForm "zzTestForm", acNormal, , , acFormPropertySettings, acDialog

MsgBox "you done yet?"

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16345831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档