【问题标题】:Recordset Addnew modifies first record in a tableRecordset Addnew 修改表中的第一条记录
【发布时间】:2015-09-17 19:58:07
【问题描述】:

我目前在通过 Access 中的 VBA 在表中添加新记录时遇到问题。 VBA 通过具有 2 个组合字段和 2 个日期字段的表单中的按钮使用。

Private Sub Schlussel_hinzufügen_Click()
    On Error GoTo ErrHandler
    Dim R As Recordset
    Set R = CurrentDb.OpenRecordset("Schluesselhistorie")
    R.AddNew
    ' Normally data is added to the record between these two
    R.Close
    Me.Requery
    DoCmd.Close
    Exit Sub
ErrHandler:
    MsgBox "Couldn't save record!", vbCritical
End Sub

只要调用 R.AddNew,表的第一条记录就会使用组合和日期字段中的数据进行修改。当

R![SLH_Schluessel_ID] = Me.Kombinationsfeld13.Value
R![SLH_Kontakt_ID] = Me.Kombinationsfeld15.Value
R![SLH_Datum_Ausgabe] = Me.SLH_Datum_Ausgabe.Value
R![SLH_Datum_Rueckgabe_Soll] = Me.SLH_Datum_Rueckgabe_Soll.Value
R.Update

被调用。我有点恼火,因为我知道不应该发生前一个(第一行事件),并且当在第一行上方添加代码时,修改了第一行并添加了具有这些值的新记录。

表是外部链接的,字段名称是德语。

是否存在对 DAO 的限制,其中使用的 Recordset 无法指定 Addnew 应该使用哪一行。或者 Addnew 是否采用 Form 的值自动将 Values 添加到表中?

【问题讨论】:

  • 您的“第一行事件”是什么/在哪里?
  • 如果您使用的是绑定表单,那么我猜当您更改第一条记录时,它当然会更改表中的相应记录,无论您如何编写 VBA。

标签: forms ms-access vba ms-access-2013


【解决方案1】:

您应该使用表格的记录克隆:

Private Sub Schlussel_hinzufügen_Click()
    On Error GoTo ErrHandler
    Dim R As DAO.Recordset
    Set R = Me.RecordsetClone
    R.AddNew
    ' Normally data is added to the record between these two
    R.UpDate
    R.Close
    Exit Sub
ErrHandler:
    MsgBox "Couldn't save record!", vbCritical
End Sub

【讨论】:

  • 这可能会做一些完全不同的事情。也许我看错了,但我们能保证表单同样绑定到Schluesselhistorie 吗?
  • 我们不知道,但是字段名称的SLH 前缀表明了这一点。
  • 我要在这里展示一些谷歌翻译 foo 并进行猜测:hinzufügen 表示 addhistoriehistory 所以也许 OP 正在尝试进行审计桌子?也许一些数据宏/触发器是按顺序排列的,或者它们可能已经被使用了,这导致了混乱。
  • 哦,是的,很多猜测都是可能的。让我们等待提问者的一些反馈。
  • 我仍在努力解决这个问题,已经一个月了(我卧床不起)。表单绑定到 Schluesselhistorie,我尝试使用提交按钮将记录添加到表中。但是在将记录添加到表中时,首先将表单字段中的数据编辑到第一行中。之后,记录被添加到表中,上面的代码没有问题。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多