访问 - 重复记录按钮创建空白记录

时间:2016-06-21 19:47:35

标签: ms-access access-vba

我有一个相当简单的数据库,5000个记录,大约60-70个字段,我创建了一个按钮来复制当前记录并删除了一些字段(我们称之为EXPAND)。

我最近收到的请求是做同样的事情而不删掉任何字段,但它不起作用。我在表单上使用了命令按钮向导并选择了“复制”选项,但新记录完全空白。此外,当我关闭记录“大量数据复制到剪贴板”时,我收到一条错误消息。我尝试了原来的按钮(EXPAND),结果出现了同样的问题。通过旧记录搜索,我发现它最近的工作时间为2016年6月10日(10天前)。

是否有更改会阻止此代码正常执行?我需要启用新的设置/选项才能让它再次运行吗?或者是否有一些替代方法可以用来实现相同的结果?

以下是系统为复制记录而创建的(非常简单的)代码(不起作用):

Private Sub cmdDuplicate_Click()

On Error GoTo Err_cmdDuplicate_Click


    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdCopy
    DoCmd.RunCommand acCmdRecordsGoToNew
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdPaste


Exit_cmdDuplicate_Click:

    Exit Sub

Err_cmdDuplicate_Click:

    MsgBox Err.Description
    Resume Exit_cmdDuplicate_Click

End Sub

3 个答案:

答案 0 :(得分:1)

最快最简单的方法是使用 DAO RecordsetClone 形式:

Private Sub cmdDuplicate_Click()

  Dim rstSource   As DAO.Recordset
  Dim rstInsert   As DAO.Recordset
  Dim fld         As DAO.Field

  If Me.NewRecord = True Then Exit Sub

  Set rstInsert = Me.RecordsetClone
  Set rstSource = rstInsert.Clone
  With rstSource
    If .RecordCount > 0 Then
      ' Go to the current record.
      .Bookmark = Me.Bookmark
      With rstInsert
        .AddNew
          For Each fld In rstSource.Fields
            With fld
              If .Attributes And dbAutoIncrField Then
                ' Skip Autonumber or GUID field.
              ElseIf .Name = "SomeFieldToPreset"
                rstInsert.Fields(.Name).Value = SomeValue
              ElseIf .Name = "SomeFieldToExclude
                ' Leave blank
              Else
                ' All other fields.
                ' Copy field content.
                rstInsert.Fields(.Name).Value = .Value
              End If
            End With
          Next
        .Update
        ' Go to the new record and sync form.
        .MoveLast
        Me.Bookmark = .Bookmark
        .Close
      End With
    End If
    .Close
  End With

  Set rstInsert = Nothing
  Set rstSource = Nothing

End Sub

答案 1 :(得分:0)

我认为最简单的方法是创建一个追加查询。将条件字段设置为当前记录的ID。这可以在查询设计窗口中轻松完成。

答案 2 :(得分:0)

没有错误消息?

表单上是否有主键ID字段,不允许您复制重复的ID?