Partager via


Connection.Execute, méthode (DAO)

S’applique à : Access 2013, Office 2013

Exécute une requête action ou exécute une instruction SQL sur l’objet spécifié.

Syntaxe

expression . Execute(Query, Options)

expression Variable qui représente un objet Connection.

Paramètres

Nom

Obligatoire/facultatif

Type de données

Description

Query

Obligatoire

String

Type String qui représente une instruction SQL ou la valeur de la propriété Name d'un objet QueryDef.

Options

Facultatif

Variant

Constante ou combinaison de constantes déterminant les caractéristiques d'intégrité des données de la requêtes, comme indiqué dans la section Remarques.

Remarques

Vous pouvez utiliser les constantes RecordsetOptionEnum suivantes comme options.

Constante

Description

dbDenyWrite

Refuse les autorisations d’accès en écriture aux autres utilisateurs (espaces de travail Microsoft Access uniquement)

dbInconsistent

(Option par défaut) Exécute les mises à jour incohérentes (espaces de travail Microsoft Access uniquement)

dbConsistent

Exécute les mises à jour cohérentes (espaces de travail Microsoft Access uniquement)

dbSQLPassThrough

Exécute une requête SQL directe. Lorsque vous sélectionnez cette option, l'instruction SQL est transmise à une base de données ODBC pour traitement (espaces de travail Microsoft Access uniquement).

dbFailOnError

Annule les mises à jour si une erreur se produit (espaces de travail Microsoft Access uniquement)

dbSeeChanges

Génère une erreur d'exécution si un autre utilisateur modifie les données que vous-même êtes en train de modifier (espaces de travail Microsoft Access uniquement)

dbRunAsync

Exécute la requête en mode asynchrone (objets ODBCDirect Connection et QueryDef uniquement).

dbExecDirect

Exécute l'instruction sans appeler préalablement la fonction API ODBC SQLPrepare (objets ODBCDirect Connection et QueryDef uniquement).

Remarque

[!REMARQUE] Les espaces de travail ODBCDirect ne sont pas pris en charge dans Microsoft Access 2013. Utilisez ADO si vous voulez accéder aux sources de données externes sans avoir recours au moteur de base de données Microsoft Access.

Remarque

[!REMARQUE] Les constantes dbConsistent et dbInconsistent s'excluent mutuellement. Vous pouvez utiliser l'une ou l'autre dans une instance donnée d' OpenRecordset, mais pas les deux à la fois. L'utilisation de dbConsistent et dbInconsistent génère une erreur.

La méthode Execute est valide uniquement pour les requêtes action. Si vous utilisez Execute avec un autre type de requête, une erreur est générée. Dans la mesure où une requête Action ne renvoie aucun enregistrement, Execute ne renvoie pas d'objet Recordset. (L'exécution d'une requête SQL directe dans un espace de travail ODBCDirect ne renvoie pas d'erreur si aucun objet Recordset n'est renvoyé.)

Utilisez la propriété RecordsAffected de l'objet Connection, Database ou QueryDef pour déterminer le nombre d'enregistrements affectés par le dernier appel de la méthode Execute. RecordsAffected contient, par exemple, le nombre d'enregistrements supprimés, mis à jour ou insérés lors de l'exécution d'une requête Action. Lorsque vous utilisez la méthode Execute pour exécuter une requête, la valeur de la propriété RecordsAffected de l'objet QueryDef correspond au nombre d'enregistrements affectés.

Dans un espace de travail Microsoft Access, si vous fournissez une instruction SQL correcte du point de vue syntaxique et que vous détenez les autorisations appropriées, la méthode Execute n'échouera pas, même si aucune ligne ne peut être modifiée ou supprimée. Par conséquent, utilisez toujours l'option dbFailOnError lorsque vous vous servez de la méthode Execute pour exécuter une requête Mise à jour ou Suppression. Cette option génère une erreur d'exécution et annule toutes les modifications accomplies dans le cas où certains enregistrements affectés sont verrouillés et ne peuvent pas être mis à jour ou supprimés.

Dans les versions antérieures du moteur de base de données Microsoft Jet, les instructions SQL étaient automatiquement incorporées dans des transactions implicites. Si une partie d'une instruction exécutée avec dbFailOnError échouait, l'instruction était entièrement annulée. Pour améliorer les performances, ces transactions implicites ont été supprimées à partir de la version 3.5. Si vous mettez à jour un code DAO plus ancien, envisagez l'utilisation de transactions explicites autour des instructions Execute.

Pour obtenir de meilleures performances dans un espace de travail Microsoft Access, en particulier dans un environnement multi-utilisateur, imbriquez la méthode Execute dans une transaction. Utilisez la méthode BeginTrans sur l'objet Workspace actif, puis utilisez la méthode Execute et terminez la transaction en appelant la méthode CommitTrans sur l'objet Workspace. Cette opération permet d’enregistrer les modifications sur disque et de libérer tous les verrous appliqués pendant l’exécution de la requête.