Help and Support

Numéro d'article: 199163 - Dernière mise à jour: mardi 29 juin 2004 - Version: 2.0

ACC2000 : Utilisation LIKE avec des caractères génériques peut provoquer résultats inattendues

Modéré : nécessite macro base, codage et compétences de l'interopérabilité.

Sommaire

Agrandir tout | Réduire tout

Symptômes

Dans une requête Microsoft Access, si vous utilisez l'opérateur LIKE avec un caractère générique pour rechercher des dates, vous pouvez voir des résultats inattendus.

Cause

La fonction comme est utilisée pour comparer deux chaînes. Il ne pas vérifier la chaîne de n'importe quel type d'informations de date.

Résolution

Utilisez les opérateurs comparaison <, >, < =, =>, >ou la clause BETWEEN lors de la recherche de dates. Par exemple, lorsque vous recherchez des dates dans le mois de mai 97, utilisez la syntaxe suivante :
Orders.OrderDate > = 5/1/1997 et Orders.OrderDate < = 5/31/1997.

Plus d'informations

Procédure pour reproduire le problème

  1. Ouvrez la base de données exemple Comptoir.mdb sera modifiée.
  2. Ouvrez une nouvelle requête en mode Création, et n'ajoutez aucune table.
  3. Dans le menu Affichage , cliquez sur mode SQL , puis tapez le code SQL suivant :
    SELECT NumberOfOrders Commandes.IDClient, Count(*) AS
    FROM Commandes
    WHERE (((Orders.OrderDate) # AND de 5/1/97 # BETWEEN #5/31/97 #))
    GROUP BY Commandes.CodeClient
  4. Enregistrer la requête en tant que qryTest1 et exécutez-le. Notez qu'il renvoie les résultats attendus.
  5. Créer une deuxième requête appelée Requêtetest2 avec le SQL suivante :
    SELECT NumberOfOrders Commandes.IDClient, Count(*) AS
    FROM Commandes
    WHERE (((Orders.OrderDate) LIKE « 5 / * / 97"))
    GROUP BY Commandes.CodeClient
    Remarque : la seule différence dans le SQL ci-dessus est que la clause WHERE utilise un caractère générique.

  6. Exécutez Requêtetest2. Vous voyez qu'elle renvoie également les résultats attendus en qryTest1.
  7. Modifier le code SQL dans qryTest1 afin que la date utilise une année à quatre chiffres comme dans l'instruction suivante :
    SELECT NumberOfOrders Commandes.IDClient, Count(*) AS
    FROM Commandes
    WHERE (((Orders.OrderDate) LIKE « 5 / * / 1997"))
    GROUP BY Commandes.CodeClient
  8. Exécutez la requête.
Notez que sans lignes sont renvoyées. Aucun correspondances ne sont trouvées.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 2000 Standard Edition
Mots-clés : 
kbmt kbprb KB199163 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 199163  (http://support.microsoft.com/kb/199163/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Traductions disponibles

 

Related Support Centers