Créer une requête directe

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 exécutent localement 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 Database Engine 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 un requête SQL directe, c’est-à-dire l’instruction Transact SQL (TSQL) qui se connecte à SQL Server à l’aide d’une 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))

Remarque    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, voir 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 > Création de requête.

  3. Fermez la boîte de dialogue Ajouter des tables (Table affichée) dans Access 2013, au besoin.

  4. Sélectionnez Modifier > Requête directe.

    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 avec 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 boîte Chaîne de connexion.

    1. Sélectionnez Générer Bouton Générateur .

    2. Suivez les invites pour créer un fichier DNS contenant les informations de la chaîne de connexion. Pour obtenir une procédure détaillée, 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.

    Une fois la connexion de fichier DNS créée, la chaîne de connexion ODBC est stockée en interne dans votre base de données Access. Voici une astuce pour obtenir une copie de cette chaîne :

    1. Localisez le nom de la table liée dans le volet de navigation à l’aide de la connexion ODBC souhaitée.

    2. Appuyez sur Ctrl+G. pour ouvrir la fenêtre VBA Immediate.

    3. Entrez le code suivant :

      ?CurrentDb.TableDefs("<table name>").Connect

      Mais substituez à <nom de la table> le nom de la table liée de l’étape a.

    4. Copiez la chaîne renvoyée dans la propriété Chaîne connexion ODBC.

  7. Entrez votre requête dans le Mode SQL.

    Remarque   Des différences importantes existent entre Access SQL et SQL Server TSQL, notamment dans la syntaxe, les noms de fonctions et les arguments de fonctions. Si vous souhaitez avoir plus d’informations à ce sujet, consultez Comparaison d’Access SQL avec SQL Server TSQL.

    Conseil    Générez d’abord une requête TSQL dans SQL Server Management Studio, puis copiez et collez la SQL dans le Mode SQL. Ceci permet à la requête d’avoir une syntaxe correcte. Si vous ne disposez pas d’un accès approprié à la base de données SQL Server, envisagez d’installer l’édition Microsoft SQL Server Express sur votre ordinateur de bureau qui prend en charge jusqu’à 10 Go et qui est un moyen plus facile et gratuit d’exécuter et de vérifier votre migration.

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

    • Renvoie des enregistrements     Certaines instructions SQL renvoient des enregistrements, tels que SÉLECTIONNER, mais pas d’autres, comme METTRE À JOUR. 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.

      Remarque    Les requêtes directes peuvent renvoyer 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 renvoyés, les noms de table seront : <nom de table local>, <nom de table local>1, <nom de table local>2.

    • Messages de journal    Indiquez si vous souhaitez renvoyer les messages 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.

    • Temporisation ODBC    Indiquez le nombre de secondes d’attente avant qu’une erreur de temporisation se produise lorsqu’une requête s’exécute. 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.

    • Enregistrements max    Indiquez le nombre maximum d’enregistrements à renvoyer. Vous pouvez avoir des ressources système limitées ou vous voulez tester vos résultats avec une petite quantité de données.

  9. Lorsque la saisie de requête est terminée, sélectionnez Conception > Exécuter. Votre requête est envoyée pour traitement vers le serveur de base de données.

Voir aussi

Référence Transact-SQL

Exécution d'une requête avec Transact-SQL

Besoin d’aide ?

Développez vos compétences dans Office
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

×