【问题标题】:How to stop records from being overwritten on close如何阻止记录在关闭时被覆盖
【发布时间】:2019-03-25 18:58:37
【问题描述】:

当我关闭表单时,当前记录会覆盖表中的第一条记录。如果我在关闭表单之前包含“Me.Undo”,则表单上的数据会更改,但基础表中不会更改。我怎样才能阻止这两种情况发生?

Private Sub Form_Load()
Dim strSelect As String

strSelect = "SELECT * FROM tblData ORDER BY tblData.txtName;"

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(strSelect, dbOpenDynaset)
rst.MoveFirst
Me.txtName = rst!txtName
Private Sub btnClose_Click()

    'Me.Undo
    MsgBox " "
    DoCmd.Close acForm, "frmdata", acSaveNo

我想关闭而不显示另一条记录并且不覆盖表中的另一条记录。

【问题讨论】:

  • 好吧,您编写代码的方式似乎有问题。您是否为 `On_Current() 事件等运行了一些其他代码?也许,您应该提供有关问题的更多详细信息,以便可以复制它以找到解决方案。
  • 首先你需要决定这应该是一个绑定表单(然后你不需要代码来加载或保存记录),还是一个未绑定 表单(那么除了您的代码之外,什么都不会被覆盖)。

标签: vba ms-access recordset


【解决方案1】:

很可能您的表单的 DataSource 属性设置为“tblData”。 因此,在您加载 Form 之后,Form_Load() 事件会触发,并且您会修改在 Form 的 DataSource 属性中设置的 Table 的第一个 Record。

这是修改表单数据的行:Me.txtName = rst!txtName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多