J'ai beaucoup d'expérience avec VBA dans Excel mais très peu d'expérience avec VBA dans Access 2010. J'essaie de supprimer des enregistrements d'un jeu d'enregistrements où l'un des champs se termine par "_X ". Lorsque j'utilise un caractère générique, la comparaison échoue. Lorsque j'utilise une chaîne spécifique, la comparaison fonctionne comme prévu. Voici le code que j'utilise.Accéder à la comparaison de chaînes de jeu d'enregistrements VBA ne fonctionne pas avec des caractères génériques
Dim db As Database: Set db = CurrentDb
Dim tbl As Recordset: Set tbl = db.OpenRecordset("WRITEON")
With tbl
Do Until .EOF
If ![ACOD] = "*_X" Then '"$ICP_X" works
Debug.Print ![ACOD] 'For testing
'.Delete
End If
.MoveNext
Loop
End With
tbl.Close
L'utilisation de "Like" a fonctionné comme un charme. J'ai posté cette question par frustration surtout. J'avais déjà passé la route de requête "DELETE". Voici ce que je place: 'Dim SQL As String SQL = "DELETE * FROM WRITEON OU WRITEON.ACOD Comme '* _X'" DoCmd.SetWarnings Faux DoCmd.RunSQL SQL DoCmd.SetWarnings TRUE' –
OK, je comprends à présent. Merci. Pensez à utiliser 'CurrentDb.Execute SQL, dbFailOnError' au lieu de' DoCmd.RunSQL'. Avec cette méthode, vous n'avez pas besoin d'éteindre 'SetWarnings'. Avec 'SetWarnings' off, vous supprimez les informations qui pourraient être utiles pour le dépannage. – HansUp
Excellent conseil! Je vous remercie. Je suis définitivement mal à l'aise avec la solution de contournement 'SetWarnings off/on'. Votre chemin est beaucoup mieux. –