据我所知,在MS Access中输入表单中的数据会自动更新表中的字段。但是,如何禁用此功能,而是允许用户单击末尾的“保存”按钮来更新记录?一直在线阅读我需要VBA等我没有经验。
答案 0 :(得分:2)
这只能在代码中完成。
您需要设置模块级布尔变量来控制保存(自动与手动),并在单击保存按钮时将其值设置为True。
Private mIsUserUpdate As Boolean 'Flag
'Cancel Auto Save
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not mIsUserUpdate Then Cancel = True
End Sub
'Manual Save
Private Sub YourButtonName_Click()
'...
'Do work
'...
mIsUserUpdate = True 'OK to save
DoCmd.RunCommand acCmdSaveRecord
mIsUserUpdate = False 'Revert
End Sub
答案 1 :(得分:1)
很遗憾,您无法在表单中禁用自动保存功能。作为一种解决方法,您可以将数据复制到临时表,允许用户根据需要编辑数据,然后单击“保存”按钮将更改的数据复制回主表。
另外,可以使用解决方法取消记录保存,如@Kostas K.在一个表单中所述,但在这种情况下,您将无法更改已编辑的记录或使用编辑表单之外的任何控件如果是子表单,则“保存”按钮应与编辑数据位于同一表单上。
答案 2 :(得分:0)
执行此操作的另一种方法是使用一对文本框。一个绑定到数据库,另一个不绑定。绑定的文本框将不可见。
Text1 is not bound
Text2 is bound
保存按钮的代码。
Me.Text2.value = me.Text1.value
if me.dirty=true then me.dirty=false
您可以进入特定条件...
If isnull(me.Text1.value) then me.Text2=.value=""
答案 3 :(得分:0)
我尝试了很多方法。 “Kostas K”的回答是可以的。但是,如果您不小心或故意编辑字段,则无法使用导航按钮。除非您进入编辑模式(将标志变量设置为 True),否则您无法进入下一条或上一条记录。 对我来说,下面的代码效果更好。如果要编辑记录,请单击“编辑”按钮。编辑完成后,您可以使用手动保存按钮或使用导航按钮保存您的记录。
Dim update As Boolean
Private Sub cmdedit_Click()
update = True
End Sub
Private Sub cmdsave_Click()
'Your commands or ...
DoCmd.RunCommand acCmdSaveRecord
End Sub
Private Sub Form_Dirty(Cancel As Integer)
If update = False Then Cancel = True
End Sub
Private Sub Form_AfterUpdate()
update = False
End Sub