【问题标题】:acCmdSaveRecord does not save recordacCmdSaveRecord 不保存记录
【发布时间】:2015-11-04 13:18:49
【问题描述】:

我有一个 MS Access 2010 应用程序。可以在表格中输入新记录。因此,我在表单加载时进入新记录:

Private Sub Form_Load()    
    DoCmd.GoToRecord Record:=acNewRec
End Sub

输入信息后,点击保存按钮,记录将被保存,表格将转到新记录。

Private Sub btnSave_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
End Sub

代码被执行,但是没有创建新记录。输入控件链接到表格字段。

【问题讨论】:

  • 您的表单是否未绑定?真是愚蠢的问题,但我不得不问
  • 我试过绑定和解绑,都没有解决问题。
  • 你确定你的表格是脏的吗?使用if dirty then 来确保有东西要保存。
  • 我在控件中输入了信息,所以应该有一些东西要保存。但是,我将如何使用您的提案?
  • "代码被执行,但是没有创建新记录。" ——究竟发生了什么?记录选择器是否仍显示“笔”编辑图标?如果acCmdSaveRecord 失败,通常会显示错误。

标签: vba ms-access ms-access-2010


【解决方案1】:

我会确保表单仅在如下所示脏时尝试保存。 我添加了一个错误处理程序来通知用户表单无法保存。

option explicit
private sub btnSave_Click()
on Error goto ErrTrap
if me.dirty= true then
     DoCmd.RunCommand acCmdSaveRecord
     DoCmd.GoToRecord , , acNewRec
end if

ErrTrap:
   MsgBox Err.Number & ": " & Err.Description
end sub

有一种解决方法可以避免 docmd.runcommand ;它将保存记录...但我从未使用过它:

if me.dirty=true then
   me.dirty=false
end if

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多