创建新记录时的MS Access事件

时间:2014-01-05 22:05:45

标签: access-vba

我使用当前事件根据父窗体上记录的ID更新子窗体的RecordSource属性。问题出现在新记录中,因为ID字段(它是一个自动编号)为空。我测试空ID以避免错误,但是当用户键入第一个字符时,我需要在创建记录后立即更新RecordSource。

问题是Dirty和BeforeInsert事件都是在实际创建之前触发,因此在分配ID之前。我需要一个事件,在分配ID自动编号后触发

提前感谢您的帮助

3 个答案:

答案 0 :(得分:1)

有一个After Insert事件可以执行您想要的操作 - 它会在插入记录后触发,因此ID存在。

答案 1 :(得分:0)

如果我了解您,您要使用的事件是Onchange事件。为了使其在您的表单上工作,获得焦点的第一个控件必须具有此事件(即文本框)。我不知道哪个控件首先在您的表单上获得焦点,但如果它有此事件,那么您可以捕获键的第一个笔划并运行您希望的那个程序。在第一次击键时,将创建ID,文本框或正在使用的任何控件都会捕获每次击键,直到退出控件。唯一需要注意的是,每次按下一个键时都会调用此事件,因此您必须创建某种类型的状态变量来设置显示您想要完成的操作,而不是再次执行此操作。

    dim status as integer(must be declared at form declaration level.)
    if not status then
       do procedure
       Status =-1
    end if

答案 2 :(得分:0)

我对此有点迟了,但是如何一起使用脏记录和新记录呢?

即:

If Me.NewRecord And Me.Dirty Then 'user has created a new record that has not yet been saved End If