在窗体的 Open 事件发生时,运行宏或事件过程可以关闭另一个窗口,或者将焦点移动到窗体中的某一特定控件上。也可以运行宏或事件过程,在窗体或报表被打开或打印之前来询问所需信息。例如,Open 宏或事件过程能打开一个自定义对话框,在自定义对话框中用户可输入准则,以限制显示在窗体上的记录集,或报表中包含的数据范围。
在激活一个已经打开的窗体时,Open 事件不会发生。例如,在 Microsoft Access 中,从另一个窗口切换到此窗体,或使用宏中的 OpenForm 操作将开启的窗体置于顶层。但是,在这些情况下将发生 Activate 事件。
在打开基于某一基础查询的窗体时,Microsoft Access 在运行 Open 宏或事件过程之前将运行窗体的基础查询。但在打开基于该基础查询的报表时,Microsoft Access 在运行报表的基础查询之前将运行 Open 宏或事件过程,后者是为了使用户能在报表打开之前指定报表的准则,例如,当 Open 事件发生时,可显示一个自定义对话框对准则进行指定。
如果应用程序能够同时加载多个窗体,请用 Activate 和 Deactivate 事件来代替 Open 事件,以便在焦点移动到不同窗体时显示和隐藏自定义工具栏。
Open 事件发生在 Load 事件之前,在窗体打开和显示它的记录时触发该事件。
在第一次打开窗体时,事件以下列顺序发生:
Open Load Resize Activate Current
Close 事件发生在 Unload 事件之后。在窗体关闭之后,从屏幕上删除之前触发该事件。
在关闭窗体时,事件以下列顺序发生:
Unload Deactivate Close
当 Close 事件发生时,可以打开另一个窗口或要求输入用户名称来产生日志记录项,以指示使用此窗体或报表的用户。
如果想确定在宏或事件过程使用 Open 还是 Load 事件,那么请注意这两事件间一个显著的差别:Open 事件能被取消,而 Load 事件不能被取消。例如,如果在一个事件过程中为窗体的 Open 事件动态创建窗体的记录源,如果没有记录可显示,则可以取消窗体的打开事件。同样,Unload 事件也能被取消,但 Close 事件却不能。
---------------------
使用afterinsert & onclose 作者: zhuyiwen 时间: 2002-7-1 08:52
cattjiu的两个方法都很好。[em26]