2016-07-30 101 views
0

我有以下代码用于在Microsoft Access中编写的可视基础中的删除按钮。运行时错误3021-没有当前记录的删除按钮

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-没有当前记录”。我无法理解,因为代码对我来说罚款并且有数据可用。我将不胜感激任何帮助。谢谢!

P.S.对不起,我不能张贴我的表格,因为它包含了大量的机密数据。取而代之的

Me.ComputerSubform.Form.Requery 

+0

删除记录后在MS-Access记录器中dset,我相信你需要移动到下一行才能成功访问它。我已经解决了这个问题已经有一段时间了,所以可能需要一些试验和错误。 –

+0

@ron tornambe谢谢!你正确的搬到下一行不会遇到这个问题。有没有一种编码方法来解决它? – user292965

+0

尝试@dbmitch的答案,但我认为这可能会将您带到rs的顶部。你也可以尝试Me.ComputerSubform.Form.MoveNext –

回答

1

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

这将您的最新更新基础记录删除

0

试试这个:

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 
+0

对不起第一篇文章....从我的手机。必须弄清格式。 –

相关问题