【发布时间】:2012-02-09 21:57:48
【问题描述】:
使用 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 都是 False,但 .AbsolutePosition 是 -1。
【问题讨论】: