Ms access 如何防止单击子窗体导致主窗体更新

Ms access 如何防止单击子窗体导致主窗体更新,ms-access,Ms Access,我在预订系统中有一个表单,其中包含一个子表单,它是Access 2010不再具有的旧ActiveX日历控件的副本。一个特别的用途是创建一个新的预订。这意味着表单“坐”在新记录上。但是,在我确定所有数据都已正确验证之前,我不希望写入该记录 不过我有点明白了。如果用户单击日历选择新日期,则会触发“更新前我的主窗体”事件-表示Access正在尝试保存窗体内容。正如我所说,我不希望在我准备好之前发生这种情况。因此,我在表单中添加了一个未绑定的不可见复选框,该复选框被初始化为false。在更新前事件中,我

我在预订系统中有一个表单,其中包含一个子表单,它是Access 2010不再具有的旧ActiveX日历控件的副本。一个特别的用途是创建一个新的预订。这意味着表单“坐”在新记录上。但是,在我确定所有数据都已正确验证之前,我不希望写入该记录

不过我有点明白了。如果用户单击日历选择新日期,则会触发“更新前我的主窗体”事件-表示Access正在尝试保存窗体内容。正如我所说,我不希望在我准备好之前发生这种情况。因此,我在表单中添加了一个未绑定的不可见复选框,该复选框被初始化为false。在更新前事件中,我检查它是否为真,如果不是,我将取消更新

问题是,这似乎会阻止日历子窗体接收其某些事件。日期由标签表示,它们将被触发。像上个月和下个月这样的大型活动都是小按钮。他们根本不开火

我知道日历的工作原理是它在应用程序的其他地方作为一个子表单使用,在那里事件可以正常触发


所以我的问题是。是否有办法使此窗体/子窗体组合正常工作,以便在准备就绪之前不会创建新记录。

您不能,一旦子窗体获得焦点,主窗体将更新。我过去发现,在新记录中使用弹出式表单是很方便的。然后可以将数据添加到这两个表单中。

这与默认情况下access的工作方式背道而驰。我知道的唯一选择是手动加载和保存记录,即在oncurrent事件中将所有文本框等更改为unbound手动填充文本框中的数据。当您想要保存时,请将文本框中的数据复制回不可见的绑定文本框并手动保存记录

可能最好使用内置的日期选择器。如前所述,使用一个弹出日历的对话框表单,让用户选择日期,然后让表单将值从表单返回给调用代码(这样您就可以创建一个适用于任何日期控件的“常规例程”)


这些方法可以解决这个保存问题。但是如上所述,Access在从主窗体转到子窗体时总是自动保存记录。这样做是为了强制生成并保存PK自动编号密钥。

很遗憾,我不能。我的客户端安装了Access 2000,并且没有更新它。很遗憾,这是一个现有的应用程序a如果没有一些复杂的问题,我无法从根本上改变用户界面discussions@akc42您不能有一个未绑定的连续子表单,而依赖于未绑定数据的表单将是一个巨大的工作量,因为所有数据都必须从记录集中提取出来,并通过代码写入表单。未绑定表单看起来像一个非常复杂的过程对我来说,仅仅是进入下一张唱片需要一些努力。