[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. Modérateur
      Salut,

      c'est quoi qui ne marche pas :

      erreur de syntaxe, pas de résultat, résultat incorrect ?
      1. Je veux juste la syntaxe SQL sous VB pour l'utilisation du like.
        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. 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. 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. Modérateur
                Il faut mettre un like *" & Text1.Text & "* ", mais ne pas oublier de rafraichir le code à chaque saisie de caractère...
                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. Rajoute un ' avant la premiere étoile et aprrès la deuxieme ce qui donne :
                    like'* " & Text1.Text & " *' "
                    1. Modérateur
                      Personne ne t'a dit de mettre un espace entre * et ce que tu cherches :-)

                      Regarde mes exemples...
                      1. Plus d'erreur, mais aucun resultat :(

                        Ben corrige moi blux puisque tu es si fort !
                        1. 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. 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. 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. 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. parceque dans la table c ville_concert, en affichage j'ai mis que ville pour que ce soit mieux ...
                                • 1
                                • 2