[VB ACCESS] utilisation du like

Bonjour !

voilà un petit soucis de syntaxe. Pouvez me dire comment j'utilise la fonction like SQL dans VB.

Ca doit etre un truc du genre :

ADODC1.RecordSource=("Select * From concert Where Date_concert like ' " & TextRechercheDate.Texte & " ' ? ")

Mais cette syntaxe ne marche pas !

Please help me ! C'est assez urgent !
Configuration: Windows XP
Firefox 2.0.0.3

25 réponses

Résumé de la discussion

Un souci de syntaxe porte sur l'utilisation de la fonction SQL LIKE en VB pour filtrer des résultats avec ADODC1.RecordSource et une clause WHERE, notamment lorsque la comparaison porte sur une date ou du texte. Plusieurs réponses recommandent d'utiliser le joker % autour du texte recherché et d'entourer la valeur entre apostrophes, car l'astérisque '*' n'est pas valide comme wildcard dans SQL. Une solution pratique montre le code VBA : SELECT * FROM trucEtTrac WHERE dateVie LIKE '%" & Text1.Text & "%', puis l'ouverture du recordset et l'affichage des résultats. En cas de doute, l'absence de résultats ou des erreurs de guillemets peuvent être des causes, mais la solution repose sur l'utilisation des guillemets et du wildcard %.

Bobot (l’IA à votre service)
  1. car si votre date est de type texte voici un bout de code qui fonctionne chez moi sans problème. en VBA
    ma table est

    trucEtTrac (id entier,nom Text, prenom Text, dateVie Text)

    
    Private Sub Command1_Click()
        Dim rst As New ADODB.Recordset
        
        rst.Open "SELECT * FROM trucEtTrac WHERE dateVie like '%" & Text1.Text & "%'", con, adOpenDynamic
        MsgBox rst(2)
    End Sub
    
    
    1. Bonsoir excusez moi
      je sort peut etre de l'eau mais je voudrais juste savoir votre date est de quel type?

      de type Date ou de type texte?
      1. j'ai le même problème... la requête sous access s'execute normalement et affiche le résultat... mais sous vb rien ne s'affiche... :(
        1. en fait la solution est celle proposée par aserf
          j'ajoute que le joker sous ADO est % et sous DAO c'est *
          merci aserf et bonne programmation à tous :)
      2. J'ai du faire

        "...like " & Chr(34) & "*" & mot & "*" & Chr(34)
        Attention à la présence de " dans la chaine mot...
        1. Modérateur
          je ne vois pas ce qui cloche...

          Tu peux lancer ta requête sous ACCESS pour voir si c'est pas ton code vb qui trafique quelque chose ?
          1. sérieux je sais pas trop pourquoi ca ne marche pas. j'ai déja réalisé un mini moteur de recherche en vb.net mais j'utilisais une dataview et la propriété rowfilter et ca marchait très bien dans ma datagridview.
            1. Salut,

              pour ton probleme de requette c'est tres simple,

              en sql le joker n'est pas * mais le %,

              remplase
              where '*mon text*'
              par
              where '%mon text%'

              a++
              seb
              www.database2code.com
            2. merci, je suis sauver, hihihi
          2. parceque dans la table c ville_concert, en affichage j'ai mis que ville pour que ce soit mieux ...
            1. Ok. donc en fait il n'y a plus d'erreur mais ca ne fonctionne pas..
              Pourquoi mets tu ville_concert et pas ville dans ta requete SQL ?
              1. Voilà les screen : http://www.univers-com.fr/CCM/Screen1.JPG

                http://www.univers-com.fr/CCM/Screen2.JPG

                Voilà le code :

                Adodc1.RecordSource = "Select * From concert Where Ville_concert like '*" & Text1.Text & "*';"
                Adodc1.Refresh
                1. L'erreure a été corrigée lorsque tu as rajouté les apostrophes ? vu qu'il n'y a plus d'erreur on peut pas trop d'aider, soit il n'y avait rien dans ta table qui correspondait à ta recherche soit il y a un probleme autre part.
                  1. Modérateur
                    Il y a deux problèmes :

                    - l'absence de quote/apostrophe pour délimiter la chaine de car. dans la définition de la requête
                    - les blancs entre * et le texte recherché
                  2. ma table est pleine je suis pas débutant ... puisque j'ai dit que sous delphi je sais le faire ... c'est juste cette foutu syntaxe la c**
                  3. Modérateur
                    @Tidodopuisque j'ai dit que sous delphi je sais le faire
                    Désolé, mais je ne l'ai lu nulle part...

                    La syntaxe sql/vb est celle donnée en 11.
                  4. @TidodoA ui lol dsl !
                    En 11 ca ne marche pas puisque j'ai une erreur LooL !
                2. Modérateur
                  Tu avais mis des simple-quote pour séparer la chaine de caractères, ils ont disparu...
                  ... like '*" & Text1.Text & "*';" 
                  --
                  A+ Blux
                   "Les cons, ça ose tout.
                  C'est même à ça qu'on les reconnait"
                  1. Plus d'erreur, mais aucun resultat :(

                    Ben corrige moi blux puisque tu es si fort !
                    1. Modérateur
                      Personne ne t'a dit de mettre un espace entre * et ce que tu cherches :-)

                      Regarde mes exemples...
                      1. Rajoute un ' avant la premiere étoile et aprrès la deuxieme ce qui donne :
                        like'* " & Text1.Text & " *' "
                        1. "You have an error in your SQL syntaxe near '* m *' at line 1"

                          Private Sub Text1_Change()
                          Adodc1.RecordSource = "Select * From concert Where Date_concert like * " & Text1.Text & " * "
                          Adodc1.Refresh

                          End Sub
                          1. Modérateur
                            Il faut mettre un like *" & Text1.Text & "* ", mais ne pas oublier de rafraichir le code à chaque saisie de caractère...
                            1. au fur et à mesure que je tape, je dois avoir des résultats

                              Private Sub Text1_Change()
                              Adodc1.RecordSource = "Select * From concert Where Date_concert like * " & Text1.Text & " ? "
                              Adodc1.Refresh

                              End Sub

                              sqlbindparameter not used for all parameter

                              Tchuss
                              1. Essaie ca, ca devrait marcher : "Select * From concert Where Date_concert like * " & TextRechercheDate.Texte & " ? ")

                                Après si tu expliquais ce que tu veux faire on pourrait peut etre plus t'aider. j'imagine que TextRecherchedate c'est une textbox.
                                1. Modérateur
                                  La syntaxe est la même que tu sois en vb ou vba, c'est du sql avec des caractères joker (? = n'importe quel caractère unitaire, * = chaine de n caractères quelconques), ex :

                                  SELECT TOTO FROM TATA WHERE TITI LIKE "toto*";
                                  SELECT TOTO FROM TATA WHERE TITI LIKE "*toto*";
                                  SELECT TOTO FROM TATA WHERE TITI LIKE "*toto";
                                  SELECT TOTO FROM TATA WHERE TITI LIKE "?toto";
                                  • 1
                                  • 2