Access - Formulaire de recherche avec caractères génériques

Résolu
Bonjour,
Je veux créer un formulaire de recherche qui me permettrait de retrouver un enregistrement qui contient un la chaine de caractères que j'ai tapé dans une zone de texte. Pour cela j'ai essayer d'afficher une requête sur le formulaire, je choisis comme critère de cette requête *[Forms]![Recherche]![Zone_de_texte1] *. Vous l'aurez bien compris ça ne fonctionne pas j'ai aussi essayé:
"*"&[Forms]![Recherche]![Zone_de_texte1] &"*" ou *'[Forms]![Recherche]![Zone_de_texte1]'*

A noter que j'ai essayé avec un critère sans caractère générique ([Forms]![Recherche]![Zone_de_texte1]), ça fonctionne très bien. J'ai aussi essayé de mettre en critère directement une valeur test par exemple 2 (*2*) ,et tout fonctionnait bien.

Je ne m'y connais pas vraiment en SQL, si quelqu'un connaitrait la bonne syntaxe à employer ou un moyen d'appliquer des caractères génériques dans une liste, je vous remercierait grandement

3 réponses

  1. Contributeur Ambassadeur
    bonjour,
    peux-tu partager les sources SQL de tes différents essais?
    0
    1. Requête 1: Dans un premier temps j'ai testé que la requête renvoie bien les enregistrement voulus lorsque je tape la référence complète. Toout fonctionne bien
      SELECT Mouvements.IDMouv, Mouvements.Type, Mouvements.[Affaire / Bdc], Mouvements.Date
      FROM Mouvements
      WHERE (((Mouvements.[Affaire / Bdc])=[Forms]![Recherche affaire test 1]![Zone de texe choix affaire]));


      Requête 2: Ensuite je teste avec "21" comme exemple. La requête me renvoie bien la liste de toutes les affaires qui comportent "21".
      SELECT Mouvements.IDMouv, Mouvements.Type, Mouvements.[Affaire / Bdc], Mouvements.Date
      FROM Mouvements
      WHERE (((Mouvements.[Affaire / Bdc]) Like "*21*"));


      Requête 3: Je veux faire un mix des deux, idéalement si je tape 21 dans la zone de texte, cette requête devrait me renvoyer les mêmes enregistrement que la requête 2. J'ai testé avec plusieurs syntaxes mais le résultat est toujours le même: la requête ne me renvoie aucun enregistrement tant que je ne met pas la référence complète (exactement comme la requête 1), les caractères génériques ne fonctionnent pas.
      SELECT Mouvements.IDMouv, Mouvements.Type, Mouvements.[Affaire / Bdc], Mouvements.Date
      FROM Affaire INNER JOIN Mouvements ON Affaire.Affaire = Mouvements.[Affaire / Bdc]
      WHERE (((Mouvements.[Affaire / Bdc]) Like "*[Formulaires]![Recherche affaire test 3]![Zone texte choix affaire]*" Or (Mouvements.[Affaire / Bdc])="*" & [Formulaires]![Recherche affaire test 3]![Zone texte choix affaire] & "*" Or (Mouvements.[Affaire / Bdc]) Like "*'[Formulaires]![Recherche affaire test 3]![Zone texte choix affaire]'*"));
      0
      1. Contributeur Ambassadeur
        Attention, il me semble qu'il y a des erreurs de noms dans les requêtes partagées.
        moi j'essaierais:
        SELECT Mouvements.IDMouv, Mouvements.Type, Mouvements.[Affaire / Bdc], Mouvements.Date
        FROM Mouvements
        WHERE (((Mouvements.[Affaire / Bdc]) Like "*" & "21" & "*"));

        et, si cela fonctionne comme la requête 2, j'essaierais ensuite:
        SELECT Mouvements.IDMouv, Mouvements.Type, Mouvements.[Affaire / Bdc], Mouvements.Date
        FROM Mouvements
        WHERE (((Mouvements.[Affaire / Bdc]) Like "*" & 
        [Forms]![Recherche affaire test 1]![Zone de texe choix affaire]
         & "*"));
        0
      2. Contributeur Ambassadeur
        @yg_bej'ai testé ceci, qui fonctionne bien:
        SELECT  *
        FROM tstlike
        WHERE tstlike.[txt] like "*" & [Forms]![flike]![txtinform] & "*";
        
        0
    2. Merci pour ton aide @yg_be.
      J'ai adapté ma solution à tes conseils. Cela fonctionne pour moi.

      Merci beaucoup ;)
      0
      1. Contributeur Ambassadeur
        Peux-tu alors marquer la discussion comme résolue?
        1