2012-02-09 74 views
0

使用Access 2010.我有两个子表单fromto。我在主窗体上有两个按钮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。

回答

0

确定。

经过与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 

它的工作原理非常漂亮。

0

你可以尝试

Me.to_subform.Form.Recordset.MoveFirst 

删除之前,但我可以建议一个添加和删除记录简单的方法是通过SQL

Currentdb.execute "DELETE * FROM TheTable WHERE ContactId=" & contactId 
Me.from_subform.Form.Requery 
+0

这种方法的问题是,当我试图从选择的记录在'to'子窗体使用来获取的ContactID: '暗淡的ContactID如long' '的ContactID = Me.to_subform.Form.RecordsetClone的ContactID ' 我得到相同的'没有当前记录'的错误。 – sigil 2012-02-10 00:44:05