Access短的保存数据的VBA代码及与标准保存代码的区别
DoCmd.RunCommand acCmdSaveRecord
来保存当前窗体(绑定数据表)的当前记录,这个代码是很效的。SaveRecord操作相当于使用操作栏中的Save按钮来保存当前记录。
二、更短的保存记录的VBA代码
那还有一种更巧妙的保存当前记录的代码,可能很多人并不知道。那就是设置 Me.Dirty属性
您可以使用Dirty属性来确定当前记录自上次保存后是否已被修改。读/写布尔值。
所以你可以使用 Me.Dirty =False 这句更短的代码 来快速保存当前窗体记录
如果你再改进一下:
If Me.Dirty Then
Me.Dirty = False
End If
1) 如果您使用 DoCmd.RunCommand acCmdSaveRecord 它总是会尝试保存(不管数据是否有改变过)
2) 如果您使用 If Me.Dirty Then Me.Dirty = False 那么它只会在有数据有修改需要保存时才会去尝试保存。这个更好
三、再改进的代码
当然你希望你保存你需要保存的内容后,还希望再继续触发 BeforeUpdate AfterUpdate事件,可以这样再改进一下
Me.Dirty = False
Me.Dirty = True
当然,反过来也是另一种用法
Me.Dirty = True
Me.Dirty = False
四、其它更多的用法
例如,您可能想询问用户是否打算对记录进行更改,如果不是,则允许用户移动到下一条记录而不保存更改。
保存记录时,Microsoft Access 将Dirty属性设置为False。当用户对记录进行更改时,该属性设置为True。
以下示例在数据更改时启用btnUndo按钮。UndoEdits ( )子例程从文本框控件的AfterUpdate事件中调用。选择启用的btnUndo按钮可使用OldValue属性恢复控件的原始值。
Sub UndoEdits()
If Me.Dirty Then
Me!btnUndo.Enabled = True ' Enable button.
Else
Me!btnUndo.Enabled = False ' Disable button.
End If
End Sub
Sub btnUndo_Click()
Dim ctlC As Control
' For each control.
For Each ctlC in Me.Controls
If ctlC.ControlType = acTextBox Then
' Restore Old Value.
ctlC.Value = ctlC.OldValue
End If
Next ctlC
End Sub
相关文章