2015-03-03 1 views
2

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 

Répondre

3

Utilisation Like au lieu de = lorsque vous comparez une valeur de texte à un modèle.

If ![ACOD] Like "*_X" Then 
    Debug.Print ![ACOD] 
End If 

Cela devrait faire ce que vous voulez, mais je ne suis pas sûr d'évaluer chaque enregistrement dans un jeu d'enregistrements pour supprimer les matches est la meilleure façon. Vous pouvez obtenir le même résultat en exécutant une requête DELETE qui utilise le même modèle pour identifier les lignes à supprimer.

DELETE FROM WRITEON 
WHERE [ACOD] Like "*_X"; 
+0

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' –

+1

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

+1

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. –