尝试删除子表单记录返回“没有当前记录”
问题描述:
使用Access 2010.我有两个子表单from
和to
。我在主窗体上有两个按钮addRecord
,它使用from
的当前所选记录和主窗体中的值为to
添加一条新记录,deleteRecord
删除to
的当前所选记录。尝试删除子表单记录返回“没有当前记录”
下面是两个按钮的代码:
Private Sub addRecord_Click()
Dim contactid As Long
Dim requestid As Long
Dim startDate As Date
contactid = Me.from_subform.Controls("contactID").Value
requestid = Me.ID.Value
startDate = Me.startDate.Value
With Me.to_subform.Form.RecordsetClone
.AddNew
!AEid = contactid
!requestid = requestid
!startDate = startDate
.Update
End With
Me.to_subform.Form.Requery
Me.from_subform.Form.Requery
End Sub
Private Sub deleteRecord_Click()
If Me.to_subform.Form.RecordsetClone.RecordCount = 0 Then
Exit Sub
End If
Me.to_subform.Form.Recordset.Delete
Me.to_subform.Form.Recordset.MoveNext
Me.from_subform.Form.Requery
End Sub
from
被重新查询,因为它的一些字段取决于是否有在to
相应的记录。
的问题是,当我在to
一个记录,然后我添加使用addRecord
一个又一个,当我尝试用deleteRecord
删除第一条记录,我得到以下错误:
Run-time error '3021':
No current record.
我除了第一个以外,还可以选择to
以外的其他记录,并将其删除;另外,如果to
是空的,我向它添加一条记录,那么我可以删除它。一旦我删除to
中的另一条记录,我可以选择第一条并删除它。
如何删除第一条记录而不必先删除另一条记录?
编辑:进一步检查记录在调试器,当我得到了No current record
错误,.BOF
和.EOF
都是假的,但.AbsolutePosition
为-1。
答
确定。
经过与3021相关的所有内容的彻底搜索之后,我决定停止从记录集中删除项目。相反,我使用下面的代码来删除当前选定的记录:
Private Sub deleteBtn_Click()
Dim db As dao.Database
Dim rs As Recordset
Dim id As Long
'test for an empty subform
Set rs = Me.to_subform.Form.RecordsetClone
If rs.RecordCount = 0 Then
Exit Sub
End If
'test for no record selected (i.e. cursor is on the new record line)
If Not IsNull(Me.to_subform.Controls("id").Value) Then
'get the ID value of the selected record
id = Me.to_subform.Controls("id").Value
'delete it from the source table
Set db = CurrentDb
db.Execute "delete * from toTable where id=" & id, dbFailOnError
'refresh both forms
Me.to_subform.Form.Requery
Me.from_subform.Form.Requery
Else
MsgBox "No record selected."
End If
End Sub
它的工作原理非常漂亮。
答
你可以尝试
Me.to_subform.Form.Recordset.MoveFirst
删除之前,但我可以建议一个添加和删除记录简单的方法是通过SQL
Currentdb.execute "DELETE * FROM TheTable WHERE ContactId=" & contactId
Me.from_subform.Form.Requery
这种方法的问题是,当我试图从选择的记录在'to'子窗体使用来获取的ContactID: '暗淡的ContactID如long' '的ContactID = Me.to_subform.Form.RecordsetClone的ContactID ' 我得到相同的'没有当前记录'的错误。 – sigil 2012-02-10 00:44:05