办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 82|回复: 0

Access最短的保存数据的VBA代码及与标准保存代码的区别 ...

[复制链接]

3

主题

9

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-1-12 11:34:16 | 显示全部楼层 |阅读模式
一、在Access中,我们通知会使用这句代码保存记录:

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
如果觉得有帮忙,请收藏  点赞 及关注我 @小辣椒高效Office
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-4-4 02:04 , Processed in 0.077874 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表