Access 的 AutoExec 宏

来源:互联网 发布:mysql not like 编辑:程序博客网 时间:2024/05/21 07:05

今天同事发给我一个 Access 文件,打开后直接跳出一个窗体。 我想看看这个窗体的一些属性,没想到刚按了设计视图按钮,文件就自动关掉了。#%$*@!&#^?,挑战我啊!

再次打开文件,点击Tools 菜单—> Startup,一般来说,Access 文件打开时就启动的窗体在这里设置,但是这个主这里居然什么都没设,我本来是想来这儿取消窗体打开的。

那就看看其它的吧,打开宏列表,看到一个可疑的宏名字AutoExec,就是它了。根据Access 的帮助文件,Access 文件打开时会寻找带这个名字的宏命令,如果找到就执行。你可以利用这个特殊的宏在数据库刚打开时执行一些Action。(You can also use a special macro named AutoExec to carry out an action or series of actions when your database first opens. When you open a database, Microsoft Access looks for a macro with this name and, if it finds one, runs it automatically.)

小提示:Startup 里面的设置先于 AutoExec 宏执行。

这个文件的主定义了这个名字叫 AutoExec 的宏,在里面执行 OpenForm 命令,就是我一打开时跳出的窗体。

但是为什么我切换到“设计视图”时Access 程序会关掉呢?我先把 AutoExec 宏的名字改掉,这样文件打开时窗体就不会打开了,再检查窗体的属性,发现 OnClose 事件关联了另一个宏命令, 这个宏执行“Quit” action,就是退出程序。难怪呢,一个窗体从“窗体视图(Form View)”切换到“设计视图”会触发 OnClose 事件的。这个主的逻辑就是,一开始就打开窗体,只要你关掉窗口,程序就跟着退出了。

小技巧:在OnClose 事件关联的宏中添加“MsgBox”action,可以确认从“窗体视图”切换到“设计视图”触发了 OnClose 事件。

如果我们在AutoExec 宏里直接用“Quit” action 呢?那我们就什么都看不到了,因为Access 程序刚打开又退出了。不过放心,Access 程序不会让这样的恶作剧得逞,Access 提供了绕过这个宏的方法。(If you don't want to run the AutoExec macro when you open the database, hold down the SHIFT key when the database opens.)

打开 Access 文件时按住 SHIFT 键。记住,要一直按住,不管你看到多少提示。