代码之家  ›  专栏  ›  技术社区  ›  MarredCheese Lionia Vasilev

区分MS Access表单中的更新和插入。AfterUpdate

  •  0
  • MarredCheese Lionia Vasilev  · 技术社区  · 7 年前

    我在MS Access中有一个绑定表单。我想知道:

    1. 插入新记录时

    我认为这些事件 Form.AfterUpdate Form.AfterInsert 并发现它在更新后激发 和插入 .

    有没有办法从内部区分更新和插入的区别 Form_AfterUpdate() ? 或者还有其他方法来检测访问中的这些事件吗?

    Private Sub Form_AfterInsert()
        Debug.Print "after insert"
    End Sub
    
    Private Sub Form_AfterUpdate()
        Debug.Print "after update"
    End Sub
    

    after update
    after insert
    

    更新现有记录时,将打印以下内容:

    after update
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   MarredCheese Lionia Vasilev    7 年前

    如果您真的只需要知道这是新的还是现有的记录承诺,请使用 BeforeUpdate 事件设置模块级变量,然后可以在 AfterUpdate 事件

    Option Compare Database
    Option Explicit
    
    Dim booNew As Boolean
    
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        booNew = Me.NewRecord
    End Sub
    
    Private Sub Form_AfterUpdate()
        Debug.Print IIf(booNew, "New", "Existing")
    End Sub
    
        2
  •  0
  •   this    7 年前

    AfterUpdate AfterInsert 但事实上 BeforeUpdate 事件您没有说明为什么需要知道记录是插入还是更新,也没有说明在这两种情况下您计划做什么。即便如此,我还是很难想象出一个好的场景,在这个场景中,你需要知道这一点 After***

    更新前 NewRecord 属性并在此基础上采取一些操作。更重要的是,您可以通过设置 Cancel 参数中的参数设置为true 更新前 事件

    更新后 事件可以在事后进行,通常不关心记录是如何形成的。例如刷新相关表单、更改焦点、启用/禁用控件等。请注意,我引用的示例都与UI相关。这就是它的用途,应该这样使用。

    推荐文章