La suppression des données d'Accès avec VBA
Je suis en train de supprimer tous les enregistrements de ma base de données Access en VBA où OTP = txtOTP.value
et VARIABLE = {NomAdminContrats,TelAdminContrats,TelecAdminContrats, [...]}
Voici mon code:
Dim query As Recordset
Set query = CurrentDb.Execute("DELETE * FROM tb_SOMMAIRE WHERE OTP = '" & txtOTP.value & "' AND (VARIABLE = 'NomAdminContrats' or VARIABLE = 'TitreAdminContrats' or VARIABLE = 'UnitAdminContrats' or VARIABLE = 'AdrAdminContrats' or VARIABLE = 'VilleAdminContrats' or VARIABLE = 'TelAdminContrats' or VARIABLE = 'TelecAdminContrats' or VARIABLE = 'CourrielAdminContrats')")
J'ai eu une erreur 3219 Opération non Valide lorsque vous essayez avec OpenRecordset ou la fonction Prévue lorsque vous essayez à Exécuter. J'en ai essayé beaucoup de choses mais je n'ai pas réussi encore à obtenir cette requête travail. J'ai aussi l'intégralité de la table dans un jeu d'enregistrements, serait-il plus facile/rapide à faire avec myRecordset.Les supprimer? Si oui, comment pourrais-je le faire?
MODIFIER
Maintenant essayer avec CurrentDb.Exécuter au lieu de CurrentDb.OpenRecordset. L'erreur est maintenant Fonction devrait au lieu de Opération non Valide.
- Ne devrait-elle pas être
CurrentDb.Execute
, pour unDELETE
déclaration?... - Il ne fonctionne pas non plus avec la parenthèse (
CurrentDb.Execute()
) j'obtiens une erreur "Fonction attendue" et sans la parenthèse j'obtiens une erreur de syntaxe. - Enfin réussi à le faire fonctionner, je vous remercie. Je vais poster la version finale du code ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Vous n'étiez pas censé utiliser des parenthèses pour le
recordset.execute
fonction, sauf si vous voulez envoyer leexecute
fonction options, ainsi que votre requête.options est une option constante que vous pouvez inclure dans la fonction, comme dbDenyWrite, ou dbFailOnError. lorsque vous n'incluez pas options dans votre fonction execute, Microsoft utilise la valeur par défaut dbInconsistent, et vous ne devriez pas utiliser des parenthèses.
La raison que votre code a travaillé lorsque vous avez utilisé la variable
sql
est parce que vous n'avez pas utiliser la parenthèse lorsque vous avez utilisé la variable.Vous avez déjà résolu le problème. Félicitations. Voir si une approche différente pour votre
WHERE
clause est plus facile de travailler avec.La
WHERE
clause vérifie siVARIABLE
correspond à une liste de valeurs. Au lieu d'utiliser plusieursOR
conditions à comparerVARIABLE
avec chaque membre de la liste, vous pouvez simplement demander le moteur db siVARIABLE
est présentIN
la liste de valeurs.Enfin réussi à le faire fonctionner. Dû déclarer une autre var de la requête pour une raison quelconque.