2012-02-09 84 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