Résolution des problèmes liés aux requêtes (ADP)

AfficherJ'éprouve des difficultés à créer une requête.

Voici quelques problèmes courants que vous pouvez rencontrer lors de la création d’une requête :

  • La syntaxe que vous avez entrée est valide mais n'est pas prise en charge en mode visuel par le Générateur de requêtes. Vérifiez bien votre syntaxe avant l'enregistrement en cliquant sur le bouton Vérifier la syntaxe SQL Image du bouton.
  • Les expressions comportant différents types de données peuvent générer des erreurs. Pour travailler avec différents types de données dans une même expression, vous devez faire une conversion vers le même type de données à l'aide de la fonction CONVERT ou CAST. Pour plus d'informations sur ces fonctions, consultez la documentation de SQL Server.
  •  Vérifiez que le nombre d’éléments de la liste Colonne des instructions UPDATE et INSERT INTO correspond au nombre d’éléments de la liste Valeurs. Cliquez sur le bouton Vérifier la syntaxe SQL Image du bouton pour vérifier votre instruction SQL et vous assurer que le nombre d’éléments correspond effectivement.
  • Une fonction de votre requête possède un nombre incorrect d’arguments. Revoyez la syntaxe de votre requête pour localiser la fonction et fournissez le nombre exact d’arguments. Dans une fonction utilisateur, vous devez toujours entrer les arguments correspondant aux paramètres, s’il y a des arguments, et vous devez également toujours entrer des parenthèses, même s’il n’y a pas d’arguments.
  • Lorsque vous utilisez des fonctions utilisateur, SQL Server n’effectue pas automatiquement la promotion des autres types de données Integer (tels que tinyint, smallint et int) en bigint ; SQL Server ne renvoie bigint que si l’expression du paramètre correspond au type de données bigint.
  • Vous avez la possibilité de transférer une expression sous forme de valeur de paramètre. Les valeurs de paramètre doivent être des valeurs scalaires ou du texte brut.
  • Quand vous spécifiez un critère pour l'instruction EXISTS, vous devez utiliser True pour EXISTS ou False pour NOT EXISTS.
  • Vous ne pouvez pas utiliser le mot clé NOT dans une cellule de colonne. Quand vous entrez une sous-requête NOT EXIST dans la cellule Colonne, entrez seulement la clause EXIST. Allez ensuite à la cellule Critères et indiquez-y Faux.
  • Un alias que vous avez indiqué contient des blancs incorporés ou un autre espace blanc. Supprimez l'espace blanc ou placez des guillemets doubles autour de l'alias.

AfficherLe message « La fonction de valeurs tabulaires utilisée comme cible n'est pas une fonction en ligne » s'affiche.

L'opération que vous tentez de réaliser requiert une fonction utilisateur modifiable (une fonction en ligne) alors que la fonction que vous utilisez n'est pas modifiable. Vous pouvez remplacer la fonction par une fonction modifiable ou bien vous pouvez modifier la requête en une requête Sélection.

AfficherJ'éprouve des difficultés à créer ou à modifier des vues indexées.

Vous ne pouvez pas utiliser la clause HAVING dans la définition de vue d'une vue indexée. Vous devez supprimer les index ou supprimer la clause HAVING.

Vous ne pouvez pas activer la case à cocher de l’astérisque (*) Toutes les colonnes pour sélectionner toutes les colonnes d’une vue indexée. Étant donné qu’une vue indexée est stockée sur disque, sa définition doit faire explicitement référence aux colonnes à inclure dans la vue. Remplacez l’astérisque (*) par les colonnes que vous souhaitez inclure dans la vue.

Une vue indexée doit contenir un index ordonné en clusters car elle est stockée sur disque. Modifiez l'index pour en faire un index ordonné en clusters.

Si vous supprimez la liaison de schéma, les index vont être supprimés. Certaines opérations, telles que la modification du nom d’une colonne de table de base de données ou la suppression d’une table de base de données, suppriment automatiquement la liaison de schéma d’une vue indexée. Lorsque la liaison de schéma est supprimée, les index sont supprimés.

 Remarque   Les vues indexées sont prises en charge lorsque le projet Microsoft Access est connecté à Microsoft SQL Server 2000 Enterprise Edition ou SQL Server 2000 Developer Edition, mais elles ne sont pas prises en charge dans Microsoft SQL Server 2000 Desktop Edition. Les vues indexées sont utilisées de manière optimale lorsque les données sont en lecture seule (par exemple, dans le cas d’un système d’aide à la décision), les requêtes de la vue indexée ne comprennent pas de regroupements ou de jointures, et les définitions de schéma de la table de base de données de la vue indexée ne sont pas censées changer. Pour plus d'informations sur les vues indexées, consultez la documentation de SQL Server.

AfficherDes résultats inattendus se produisent avec ma requête.

Des résultats inattendus peuvent se manifester lorsque vous utilisez une instruction SQL dont le produit contient deux ou plusieurs champs ayant le même nom. Par exemple, des résultats inattendus sont possibles lorsque vous travaillez avec une vue basée sur deux tables, et qui contient deux champs possédant le même nom mais situés dans des tables différentes. Pour éviter tout comportement aberrant, spécifiez un alias pour l’un des champs, afin de vous assurer que chaque champ du résultat possède un nom unique.

AfficherAccess a ajouté une fonction CONVERT et DATETIME à mon expression de date.

Access ajoute une fonction Transact-SQL CONVERT pour convertir les expressions de date de vos instructions SQL en un format d’année à quatre chiffres qui soit explicite, comme le montre l’exemple suivant :

CONVERT(DATETIME, '1997-01-01 00:00:00', 102)
            

Pour plus d'informations sur la fonction Transact-SQL CONVERT, consultez la documentation de SQL Server.

AfficherMa requête Création de table ne peut pas s’exécuter.

Une requête Création de table utilise l’instruction SQL INSERT FROM pour copier des lignes d’une table à une autre. Cette situation peut se produire lorsque vous faites migrer votre base de données Access à partir d’une base de données Microsoft SQL Server version 7.0 ou 6.5, que vous créez votre propre procédure stockée de création de table dans l’Éditeur de texte SQL, ou que vous créez une requête Création de table à l’aide de SQL Server Enterprise Manager dans SQL Server.

Pour exécuter une requête Création de table dans un projet Access connecté à une base de données Microsoft SQL Server version 7.0 ou 6.5, vous devez définir la valeur True pour l’option de base de données Sélectionner dans/copie en bloc (la valeur par défaut est False) en utilisant la procédure stockée système sp_dboption, comme le montre l’exemple suivant.

Exec sp_dboption 'select into/bulkcopy'
            

Vous pouvez exécuter la procédure stockée système dans SQL Server Enterprise Manager ou créer une procédure stockée dans Access à l’aide de l’Éditeur de texte SQL. Pour définir cette option, vous devez être membre des rôles db_owner ou sysadmin. Pour plus d'informations sur l’option de base de données Sélectionner dans/copie en bloc, consultez la documentation de SQL Server.

AfficherLe message « Erreur ADO : utilisation non valide de <nom de fonction> dans une fonction » s’affiche.

Vous ne pouvez pas utiliser de fonctions Transact-SQL non déterministes, de variables globales non déterministes, ou de procédures stockées étendues dans une instruction SQL CREATE FUNCTION. Les fonctions non déterministes, les variables globales et les procédures stockées étendues peuvent renvoyer des résultats différents chaque fois qu'elles sont appelées à partir du même ensemble de valeurs d’entrées, et par conséquent, entraîner des effets négatifs sur la base de données, par exemple lors des mises à jour des tables

Les fonctions et les variables globales suivantes ne sont pas autorisées dans une fonction utilisateur :

@@CONNECTIONS
@@CPU_BUSY
@@IDLE
@@IO_BUSY
@@MAX_CONNECTIONS
@@PACK_RECEIVED
@@PACK_SENT
@@PACKET_ERRORS
@@TIMETICKS
@@TOTAL_ERRORS
@@TOTAL_READ
@@TOTAL_WRITE
GETDATE
GETUTCDATE
NEWID
RAND
TEXTPTR

AfficherLorsque j’exécute une requête paramétrée nommée, j’obtiens un ensemble inattendu de résultats vierges.

Vous utilisez peut-être des mots comme paramètres, qui ne sont pas pris en charge. Vous ne pouvez pas utiliser les mots clés du langage Visual Basic Édition Applications (VBA) appartenant au modèle d’objet de Access comme noms de paramètres. Pour consulter une liste de ces mots clés, utilisez l’Explorateur d'objets dans Visual Basic Editor afin d’afficher les membres de l’objet Application de Access.

AfficherJ'éprouve des difficultés à utiliser des fonctions de regroupement de domaine dans ma requête paramétrée.

Vous ne pouvez pas utiliser les fonctions de regroupement de domaine suivantes dans un projet Microsoft Access (.adp).

DAvg
DCount
DLookup
DFirst, DLast
DMin, DMax
DStDev, DStDevP
DSum
DVar, DVarP

AfficherJ'éprouve des difficultés à utiliser des fonctions de regroupement de domaine dans un formulaire ou un état.

Dans un projet Access, vos fonctions de regroupement ne peuvent pas utiliser de références aux contrôles dans des objets tels que les formulaires ou les états. Par exemple, vous ne pouvez pas utiliser l’expression suivante :

=DLookUp("CategoryName";"Categories";"CategoryID = Reports!Report1!CategoryID")
            
 
 
S'applique à :
Access 2003