【问题标题】:Run time error 3021- no current record for delete button运行时错误 3021-删除按钮没有当前记录
【发布时间】:2016-07-30 17:42:11
【问题描述】:

我有以下代码,用于在 Microsoft Access 中用 Visual Basics 编写的删除按钮。

Private Sub Delete_Click()
If Not (Me.ComputerSubform.Form.Recordset.EOF And Me.ComputerSubform.Form.Recordset.BOF) Then
    If MsgBox("Are you sure to delete?", vbYesNo) = vbYes Then
        CurrentDb.Execute "DELETE FROM Computer " & _
                " WHERE PCSN=" & Me.ComputerSubform.Form.Recordset.Fields("PCSN")
      Me.ComputerSubform.Form.Requery    
    End If
   End If
End Sub

第一次的话还不错。但是当我尝试删除另一条记录时,我会遇到“运行时错误 3021-没有当前记录”。我无法理解,因为代码对我来说很好,并且有可用的数据。我将不胜感激任何帮助。谢谢!

附:很抱歉,我无法发布我的表格,因为它包含大量机密数据。

【问题讨论】:

  • 删除MS-Access记录集中的记录后,我相信您需要移动到下一行才能成功访问它。我已经有一段时间没有解决这个问题了,所以可能需要一些试验和错误。
  • @ron tornambe 谢谢!你是对的移动到下一行不会遇到这个问题。有编码方法解决吗?
  • 试试@dbmitch 的回答,但我认为这可能会让你登上顶峰。你也可以试试 Me.ComputerSubform.Form.MoveNext
  • 我试过@dbmitch 和你的建议,效果很好。 :) 以前,我的 PSCN 列是一个数字,但我现在需要将其更改为文本。我遇到“标准表达式文本中的运行时错误 3464 数据类型不匹配”。我知道这是一个简单的问题,但我不知道如何解决它。我可以再次寻求您的帮助吗?谢谢!

标签: ms-access


【解决方案1】:

代替

Me.ComputerSubform.Form.Requery

你应该使用
Me.ComputerSubform.Form.Recordset.Requery

这将使用您最近的删除更新基础记录集

【讨论】:

    【解决方案2】:

    试试这个:

    dim rs as dao.recordset
    set rs = currentdb.openrecordset("computers",  _
    dbopendynaset)
    rs.findfirst "[pcsn] =  " & _ 
    me.computersubform.form!pcsn
    'If pcsn is text instead of a number you need chr(34)
    ' on either side
    if rs.nomatch = false  then 
      rs.edit
      rs.delete 
      rs.update
      rs.close
    me.refresh
    end if
    

    【讨论】:

    • 抱歉第一次发帖......来自我的手机。必须弄清楚格式。
    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多