【问题标题】:Access VBA recordset Update runs fine but not updatingAccess VBA 记录集更新运行良好但不更新
【发布时间】:2016-10-15 20:28:05
【问题描述】:

我无法弄清楚我的代码有什么问题。请注意,代码一直运行良好,直到上周。我们没有对代码进行任何更改...所以这是个谜。

我有一个 Access VBA,通过使用 recordset.update 递增 1 来更新记录。 代码看起来像这样......

Sub UpdateQuarter(PersonName As String)
Dim dB As Database
Dim rst As DAO.Recordset
Dim Quarter As Integer

Set dB = CurrentDb
Set rst = db.OpenRecordset("table")

rst.MoveFirst
Do Until rst.EOF
    rst.Edit
    If Name = rst!NameofPerson Then
        Quarter = rst!CurrentQuarter
        Quarter = Quarter + 1
        rst!CurrentQuarter = Quarter
        rst.Update
    End If
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing

End Sub

我有其他代码非常相似(完全相同的结构)的 Access 数据库运行得非常好。这段代码也运行得很好,当我逐行调试时,它表明正确的值正在被捕获和递增。但是,它不会更新表格!!

这快把我逼疯了。任何人都知道为什么会发生这种情况?

提前致谢。

【问题讨论】:

  • 我会专注于找出它是否真的是“更新失败”问题,还是“找不到匹配”问题。添加几个计数器怎么样,然后计算有多少名称匹配,有多少不匹配。这可能会有所帮助。另外,假设“CurrentQuarter”是一个数字字段?哦,不要使用 'name' 使用 'strName'!!
  • 我已经确保它确实找到了正确的匹配项(上面的代码已经过清理。我已经测试了一个特定的项目并逐行测试)。当我在调试模式下将鼠标悬停在它上面时,我已确保所有变量和记录(例如 rst!CurrentQuarter)都更新为新值……但它不会在表中更新。我没有再次使用“名字”哈哈,它已经过消毒了:) 但很抱歉这可能让你感到困惑..
  • 净化代码的坏处在于它具有误导性。看看你在哪里说 RSA!编辑......现在我不知道这是一个错字还是它真的说 RSA 而不是 RST。你有明确的选择吗?
  • 糟糕。你说的对。我将其更改为 RST。只有变量名被清理了,但我完全明白你的意思。我让我们的 IT 团队(专门的编码员)检查了这段代码,他们也不明白为什么这不起作用。好像最近的 Microsoft 更新把这件事搞砸了,因为它从上周开始工作(而且我们没有改变代码中的任何东西!)
  • 非常感谢您回复我。我将此函数作为另一个函数的调用,该函数在同一记录集上工作。我认为这是造成问题的原因!我取出那个调用函数并将代码直接嵌入其中,它现在可以工作了!!感谢您的建议,今后我会尽量做到准确。

标签: vba recordset


【解决方案1】:

您必须手动打开数据库并按 Ctrl+S 并关闭它。 SQL qwery 将在此之后工作。

然后就不能再工作了。 重复第一步...

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 2015-09-29
    • 2010-10-27
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多