IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Créer moteur de recherche (pas si simple) [Débutant(e)] [AC-2007]


Sujet :

IHM

  1. #21
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Le weekend a porté ses fruits et j'ai trouvé . L'histoire était toute bête : lorsque le lance Access, par défaut il y a une option de sécurité qui désactive le contenu de la base de données... Étonnamment, si cela m'empêche d'afficher un résultat via une requête, je peux quand même afficher un état et insérer de nouvelles données dans ma base...

    Bref, en désactivant cette option, je peux afficher le résultat de ma requête qui depuis le début était bonne... Et merci à ceux qui m'ont aidé.

    Maintenant, une question un peu moins triviale.

    Avec mon code actuel (voir ci-dessous) je peux faire une recherche avec une chaîne de type toto, tata. Cela va me ressortir toutes les entrées contenant une chaîne du type blabla, toto, tata, blabla. Or j'aimerai que cela me ressorte également une chaîne de type toto, blabla, tata, blabla.

    Une idée serait de créer plusieurs champs pour saisir un mot clé et de combiner les champs dans ma requête. Ca je devrais y arriver. Mais comment faire pour saisir tous mes mots clés dans un même et unique champ (comme dans un moteur de rechercher web) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cmd_recherche_Click()
     
    Dim strSql As String
     
    strSql = "SELECT *FROM biblio WHERE mots_cles LIKE ""*" & Me.txt_critere & "*"";"
     
    Me.lst_resultat.RowSource = strSql  ' affecte sql a lst_Resultat
    Me.lst_resultat.Requery             ' recalcule la liste
     
    End Sub

  2. #22
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Tu peux utiliser un caractère qui te permettrait de délimiter tes mots clés. PAr exemple "," et utiliser la fonction split pour trouver les mots clés saisis:

    http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx

    En faisant un petit traitement après la saisie, tu doit pouvoir t'en sortir?

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Ah ça à l'air d'être ce que je cherchais. Ca ressemble à la fonction explode en php (que je connais). Merci.

    Je reviens d'ici peu pour dire si je m'en suis sorti ou pour ressortir mon panneau help

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Bon eh bien, ça sera le panneau help je crois bien...

    Je pense bien utiliser Split mais je dois avoir un problème dans la construction de la variable condition (enfin je pense). Que je tape un ou plusieurs mots dans le champ de recherche, aucun résultat ne sort

    J'ai testé avec les points d'arrêt, le code semble s'exécuter de la façon voulue. Je dois rater quelque chose... mais quoi ?

    Voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub cmd_recherche_Click()
     
    Dim strSql As String, critere() As String, condition As String, txt As String
     
    txt = Me.txt_critere
     
    critere() = Split(txt, ", ") 'decoupe txt_critere
     
    condition = "" 'initialisation de la variable
     
    For Each i In critere
    'boucle pour creer condition WHERE de la requete
        If condition <> "" Then ' si condition non vide alors on ajoute AND et un nouveau critere à condition
            condition = condition & " AND " & "*" & i & "*"
            Else ' si condition vide alors on le rempli avec un critere
                condition = "*" & i & "*"
        End If
    Next i
     
    strSql = "SELECT * FROM biblio WHERE mots_cles LIKE " & condition & ";"
     
    Me.lst_resultat.RowSource = strSql ' affecte sql a lst_Resultat
    Me.lst_resultat.Requery            ' recalcule la liste
     
    End Sub

  5. #25
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Peut être en utilisant des côtes simples ' car c'est un champ texte et surtout, si tu cherches un ensemble de mots clés en utilisant le AND, tous les mots devront être trouvés pour te retourner un résultat.

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Où ça des cotes simples ? J'ai un peu l'impression de tourner en rond, et du coup je ne sais pas trop où je dois les placer (dans la requête, lors de la concaténation, remplacer tous les " par des ' ou seulement certains, etc.).

    Pour le AND, c'est voulu et je fait bien mon essai avec des valeurs qui doivent me retourner un résultat.

  7. #27
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bon finalement laisse tomber les côtes simple c'est moi qui doit délirer je pense . Par contre un truc que je viens de tester et qui devrait te convenir, à chaque ajout de condition je te conseille d'écrire ceci:

    condition = condition & " AND mots_cles LIKE " & "*" & i & "*"

    comme ca tu dervrait te retrouver avec une requête qui se termine par "WHERE mots_cles like mot1 AND mots_cles like mot2 ...

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Mais bon sang, c'est biensûr !

    J'étais tellement persuadé que cela venait de ma découverte de vba que j'en ai oublié les basiques SQL. Mais ce n'est pas pour autant que cela fonctionne

    En fait, en toute logique, ma requête devrait être de la forme SELECT * FROM table WHERE mots_cles LIKE "mot_1" AND mots_cles LIKE "mot_2"

    Et j'ai du mal à caser les guillemets entre les mots. Pour l'heure j'ai ; SELECT * FROM table WHERE mots_cles LIKE "mot_1 AND mots_cles LIKE mot_2".

    Une idée ?

  9. #29
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    A chaque ajout d'une condition : " '*" & i & "*' "
    Normalement ça devrait fonctionner. Par contre je vois mal pourquoi tu te retrouve avec "mot_1 AND mots_cles LIKE mot_2". Je ne vois pas à quel niveau tu ajoute les guillemets.

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Comme dirait un héros que j'ai bien connu : Yata !

    C'est bon ça marche Merci du coup de main

    J'aurai surement d'autres questions pour améliorer mon questionnaire mais ce que je voulais faire dans un premier temps est fait !

    Pour info, je mets mon code ça pourra en aider d'autres.

    Encore merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub cmd_recherche_Click()
     
    Dim strSql As String, critere() As String, condition As String, txt As String
     
    txt = Me.txt_critere
     
    critere() = Split(txt, ", ") 'decoupe txt_critere
     
     
     
    For Each i In critere
    'boucle pour creer condition WHERE de la requete
        If condition <> "" Then ' si condition non vide alors on ajoute AND et un nouveau critere à condition
            condition = condition & " AND mots_cles LIKE " & " '*" & i & "*' "
            Else ' si condition vide alors on le rempli avec un critere
                condition = "'*" & i & "*'"
        End If
    Next i
     
    'condition = condition
    ' strSql = condition & ";"
    strSql = "SELECT * FROM biblio WHERE mots_cles LIKE " & condition & ";"
     
    Me.lst_resultat.RowSource = strSql ' affecte sql a lst_Resultat
    Me.lst_resultat.Requery            ' recalcule la liste
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] Créer moteur de recherche
    Par Drahcir dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/12/2010, 01h10
  2. créer moteur de recherche pour terminaux mobile avec j2me
    Par alaa.cadabra dans le forum Java ME
    Réponses: 0
    Dernier message: 15/03/2010, 15h41
  3. Créer moteur de recherche interne
    Par Julianinho dans le forum Langage
    Réponses: 8
    Dernier message: 12/04/2009, 12h01
  4. [MySQL] Créer moteur de recherche dans la BDD
    Par Little_flower dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/12/2007, 12h40
  5. [MySQL] Créer un moteur de recherche simple ?
    Par eXe|xTn dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2006, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo