我在预订系统中有一个表单,其中包含一个子表单,该子表单是Access 2010不再具有的旧ActiveX日历控件的副本。一个特别的用途是创建一个新的预订。这意味着表格“坐在”新记录上。但是,在确定所有数据都经过适当验证之前,我不希望写入该记录。
但是我有一点陷阱。如果用户单击日历以选择新日期,则我的主表单将触发Before_Update事件 - 指示Access正在尝试保存表单内容。正如我所说,我不希望在我准备好之前发生这种情况。所以我在表单中添加了一个未绑定的不可见复选框,初始化为false。在Before update事件中,我检查它是否为真,如果不是,我取消更新。
问题是,这似乎阻止了Calendar子窗体接收它的一些事件。这些日子由标签代表,它们会发射。像上个月和下个月这样的大事件都是小按钮。他们根本不开枪。
我知道日历可以正常运行,因为它在应用程序的其他地方用作子表单,并且在那个地方事件可以正常启动。
所以我的问题是。有没有办法让这个表单/子表单组合工作,这样我才能在准备好之前创建一个新记录。
答案 0 :(得分:1)
这违反了默认情况下访问的工作方式。我所知道的唯一选择是手动加载和保存您的记录,即在oncurrent事件中将所有文本框等更改为未绑定,手动填充文本框中的数据。当你想保存复制文本框中的数据回到不可见的绑定文本框并mannualy保存记录
答案 1 :(得分:0)
您不能,只要子窗体获得焦点,主窗体就会更新。我在过去发现,使用弹出窗体可以方便地获取新记录。然后可以将数据添加到两种表格中。
答案 2 :(得分:0)
可能最好使用内置日期选择器。如前所述,使用弹出日历并让用户选择日期然后让表单将值返回到表单中的调用代码的对话框表单(这样您就可以制作适用于任何日期控件的“常规例程”。
这些方法可以解决这个问题。但是如前所述,当从主表单转换为子表单时,Access始终自动保存记录。这样做是为了强制PK自动编号键生成+保存。