Supprimer un enregistrement d’un jeu d’enregistrements DAO
Vous pouvez supprimer un enregistrement existant dans une table ou un objet Recordset de type feuille de réponse dynamique à l’aide de la méthode Delete . Vous ne pouvez pas supprimer des enregistrements d'un objet Recordset de type capture instantanée. L’exemple de code suivant supprime tous les enregistrements en double dans la table Shippers.
Sub DeleteDuplicateShippers()
Dim dbsNorthwind As DAO.Database
Dim rstShippers As DAO.Recordset
Dim strSQL As String
Dim strName As String
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
strSQL = "SELECT * FROM Shippers ORDER BY CompanyName, ShipperID"
Set rstShippers = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset)
' If no records in Shippers table, exit.
If rstShippers.EOF Then Exit Sub
strName = rstShippers![CompanyName]
rstShippers.MoveNext
Do Until rstShippers.EOF
If rstShippers![CompanyName] = strName Then
rstShippers.Delete
Else
strName = rstShippers![CompanyName]
End If
rstShippers.MoveNext
Loop
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
Lorsque vous utilisez la méthode Delete , le moteur de base de données Access supprime immédiatement l’enregistrement actif sans avertissement ni invite. La suppression d’un enregistrement n’entraîne pas automatiquement l’enregistrement suivant pour devenir l’enregistrement actif ; pour passer à l’enregistrement suivant, vous devez utiliser la méthode MoveNext . N’oubliez pas qu’une fois que vous avez quitté l’enregistrement supprimé, vous ne pouvez plus y revenir.
Si vous essayez d’accéder à un enregistrement après l’avoir supprimé sur un objet Recordset de type table, vous verrez l’erreur 3167, « L’enregistrement est supprimé ». Sur une feuille de réponse dynamique, vous verrez l’erreur 3021, « Aucun enregistrement actif ».
Si vous avez un clone d’objet Recordset positionné sur l’enregistrement supprimé et que vous essayez de lire sa valeur, l’erreur 3167 s’affiche, quel que soit le type d’objet Recordset . Si vous essayez d'utiliser un signet pour passer à un enregistrement supprimé, vous obtiendrez également l'erreur 3167.
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour