Créer une requête SQL directe

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Vous pouvez utiliser Access en tant qu’application frontale, puis effectuer un lien avec des tables dans un serveur principal tel que SQL Server. Par défaut, la plupart des requêtes s’exécutent localement dans le moteur de base de données Access ACE. Dans certains cas, Access peut exécuter une requête à distance sur SQL Server, en fonction de la syntaxe SQL et d’autres facteurs. Pour obtenir plus d’informations, voir « JET Moteur de base de données version 3.0 ODBC Connectivity » dans Livres blancs JET et ODBC retrouvés.

Bien souvent, vous voulez explicitement exécuter une requête sur un serveur de base de données. Vous l’effectuez pour améliorer les performances : les serveurs de base de données ont une puissance de traitement supérieure qu’un ordinateur de bureau et vous pouvez renvoyer un sous-ensemble réduit de données via la connexion réseau. Pour exécuter une requête sur un serveur de base de données, utilisez une requête directe qui est une instruction Transact SQL (TSQL) qui se connecte à SQL Server à l’aide d’un chaîne de connexion ODBC. Par exemple, vous pouvez transférer une instruction SELECTIONNER pour renvoyer des données vers une feuille de données, un formulaire, un rapport ou un contrôle de liste, exécuter l’équivalent de requêtes d’action (instructions Langage de manipulation de données (DML)), appeler des procédures stockées et effectuer des tâches administratives (instructions Langage de définition de données (DDL))

Note Les résultats d’une requête directe sont en lecture seule. Pour modifier directement des données dans une feuille de données ou un formulaire, créez une table liée à une vue indexée. Pour plus d’informations, consultez Créer des vues indexées.

  1. Connectez-vous à une base de données de serveur.
    Pour obtenir plus d’informations sur la liaison avec SQL Server, voir Importer les données d’une base de données SQL Server ou établir une liaison avec celles-ci et Créer un lien vers une base de données Azure SQL Server Database ou importer des données à partir de celle-ci.
  2. Sélectionnez Créer une>conception de requête.
  3. Si nécessaire, fermez la boîte de dialogue Ajouter des tables (Afficher la table dans Access).
  4. Sélectionnez Concevoir>pass-through.
    Access masque la grille de création et affiche le Mode SQL.
  5. Si la feuille de propriétés de la requête n’est pas visible, appuyez sur F4 pour l’afficher.
  6. Pour définir cette feuille de propriété, cliquez sur la zone de propriété Chaîne connexion ODBC, puis effectuez l’une des opérations suivantes :

Pour créer manuellement une chaîne de connexion :

  1. Dans le volet de navigation, cliquez avec le bouton droit sur une table liée à la source de données souhaitée, puis sélectionnez Gestionnaire de tables liées.
  2. Dans la boîte de dialogue Gestionnaire de tables liées, sélectionnez la case à cocher de la source de données, puis Modifier.
  3. Dans la boîte de dialogue Modifier le lien , copiez le texte dans la zone Chaîne de connexion .
  1. Entrez votre requête dans le Mode SQL.
    Note: Il existe des différences importantes entre Access SQL et SQL Server TSQL, en particulier avec la syntaxe, les noms de fonction et les arguments de fonction. Si vous souhaitez avoir plus d’informations à ce sujet, consultez Comparaison d’Access SQL avec SQL Server TSQL.
    Pointe Générez d’abord la requête TSQL dans SQL Server Management Studio, puis copiez et collez-la dans la vue SQL. Ceci permet à la requête d’avoir une syntaxe correcte. Si vous ne disposez pas d’un accès pratique à une base de données SQL Server, envisagez d’installer Microsoft SQL Server Express édition sur votre bureau, qui prend en charge jusqu’à 10 Go et constitue un moyen gratuit et plus facile d’exécuter et de case activée votre migration.

  2. Envisagez de définir des propriétés associées supplémentaires :

    • Retourne des enregistrements Certaines instructions SQL retournent des enregistrements, tels que SELECT, et d’autres non, comme UPDATE. Si la requête renvoie des enregistrements, définissez cette propriété sur Oui et si la requête ne renvoie aucun enregistrement, définissez celle-ci sur Non.
      Note Les requêtes directes peuvent retourner plusieurs jeux de résultats, mais dans une feuille de données, un formulaire, un rapport ou une variable de jeu d’enregistrements, seul le premier jeu de résultats est utilisé. Pour récupérer plusieurs jeux de résultats, utilisez une requête Création de table tel que décrit dans l’exemple suivant :

      SELECT <pass-through query name>.*
      INTO <local table name>
      FROM < pass-through query name >
      

      Vous devez utiliser l’astérisque (*) car chaque jeu de résultats peut avoir des colonnes différentes. Chaque jeu de résultats est enregistré dans une table distincte et les nombres sont donc ajoutés aux noms de table locaux. Par exemple, si trois jeux de résultats sont retournés, les noms de table sont : <nom de la table locale, <nom>> de la table locale 1, <nom>de la table locale 2.

    • Messages de journal Spécifiez s’il faut retourner des messages à partir de la base de données SQL dans une table de messages Access. Le nom de table a le format nom d'utilisateur – nn, nom d’utilisateur représentant le nom de connexion de l’utilisateur actuel et nn est un nombre commençant par 00.

    • Délai d’expiration ODBC Spécifiez le nombre de secondes à attendre avant qu’une erreur de délai d’attente ne se produise lorsqu’une requête est exécutée. La valeur par défaut est 60 secondes. Des retards peuvent exister en raison du trafic réseau ou d’une utilisation intensive du serveur de base de données.

    • Nombre maximal d’enregistrements Spécifiez le nombre maximal d’enregistrements à retourner. Vous avez peut-être des ressources système limitées ou vous souhaitez tester vos résultats avec une petite quantité de données.

  3. Lorsque vous avez terminé d’entrer la requête, sélectionnez Exécuter la conception>. Votre requête est envoyée pour traitement vers le serveur de base de données.

Voir aussi

Informations de référence sur Transact-SQL

Interrogation avec Transact-SQL